Docker最新超详细教程——安装与部署

一、安装Docker

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费),EE 即企业版,强调安全,付费使用。Docker CE 分为 stable 、test 和 nightly 三个更新频道。

我们可以在CentOS、Ubuntu、Windows,MacOS上安装,但是市场上基本都是选择

二、CentOS安装Docker

Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。

所以必须要是CentOS7,低于这个版本就会出问题!!!

1. 卸载(可选)

如果之前安装过旧版本的Docker,可以使用下面命令卸载:

yum remove docker 
docker-client 
docker-client-latest 
docker-common 
docker-latest 
docker-latest-logrotate 
docker-logrotate 
docker-selinux 
docker-engine-selinux 
docker-engine 
docker-ce

2. 安装yum工具

首先需要大家虚拟机联网,安装yum工具

yum install -y yum-utils 
device-mapper-persistent-data 
lvm2 --skip-broken

3. 更新本地镜像源

默认是用阿里云的镜像

# 设置docker镜像源
yum-config-manager 
--add-repo 
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast

4. 安装docker

可能会比较久,所以必定要先执行第3步,有了镜像可以快许多!

yum install -y docker-ce

这样子docker就已经安装好了!!!

5. 注意事项 关闭防火墙(重大!!!)

Docker应用需要用到各种端口,逐一去修改防火墙设置。超级麻烦,因此提议大家直接关闭防火墙!

启动docker前,必定要关闭防火墙后!!

# 关闭
sudo systemctl stop firewalld
# 禁止开机启动防火墙
sudo systemctl disable firewalld

查看防火墙的状态(确保是不是真的关闭了!)

如下图:

显示 Active: inactive (dead) 表明关闭了!

Docker最新超详细教程——安装与部署

三、Docker的使用

1. 通过命令启动docker

# 启动docker服务
sudo systemctl start docker

# 停止docker服务
systemctl stop docker

# 重启docker服务
sudo systemctl restart docker

2. 输入命令,可以查看docker版本

用来判断docker

docker -v

3. 配置镜像加速

docker官方镜像仓库网速较差(就像我们去访问github一样),我们需要设置国内镜像服务,首推阿里云!

页面如下图所示

Docker最新超详细教程——安装与部署

完整docker镜像加速配置

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://9bugzlv8.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

四、Docker最新超详细教程——Docker的基本操作

1、镜像命令

docker镜像操作的命令无非就是CRUD。

常见的镜像操作命令如下所示:

docker build
docker push
docker pull
docker images
docker rmi
docker save
docker load

在本地获取镜像有两种方法:

(1)docker build:可以从本地获取,通过DockerFile的文件,将其构建成一个镜像

(2)docker pull:从服务器中拉取一个镜像(常用!)

想知道本地镜像的情况:

(1)docker images:查看镜像

(2)docker rmi:删除不需要的镜像

想把镜像分享给本人:

(1)docker push:将其上传到镜像服务器,可供本人拉去

(2)docker save、docker load:先将其打成压缩包,发送出去,再将压缩包加载为镜像

Docker最新超详细教程——安装与部署

命令许多,不必定全都可以记住,但是我们可以使用help命令查看。

Docker最新超详细教程——安装与部署

如果想看具体哪一个命令的参数有什么

docker images --help

案例一:拉取、查看镜像

我们可以先登入DockerHub,搜索想要拉取的镜像(以nginx为例)

Docker最新超详细教程——安装与部署

先在Centos上启动Docker

sudo systemctl start docker

再执行pull拉取命令

sudo docker pull nginx

运行结果如下

Docker最新超详细教程——安装与部署

查看刚刚拉取下来的镜像信息

sudo docker images

2、容器操作

我们在之前的章节中提到了容器这一概念,想必大家都知道了容器与镜像的异同,我们在这里就不赘述了。

容器相关命令

Docker最新超详细教程——安装与部署

  • docker run:创建并运行一个容器,处于运行状态
  • docker pause:让一个运行的容器暂停
  • docker unpause:让一个容器从暂停状态恢复运行
  • docker stop:停止一个运行的容器
  • docker start:让一个停止的容器再次运行
  • docker rm:删除一个容器
  • docker exec:进入容器执行命令
  • docker logs:查看容器的运行日志
  • docker ps:查看所有的容器和运行状态

容器三个状态

运行:进程正常运行

暂停:进程暂停,CPU不再运行,并不释放内存

停止:进程终止,回收进程占用的内存、CPU等资源

暂停与停止有什么差别?

两者的差别在于操作系统层面!

如果容器处于暂停状态,操作系统会将容器中的进程挂起,容器关联的内存暂存下来,CPU不再执行这个进程;如果我们将其恢复,进程就会直接运行,内存空间恢复,程序继续运行。

如果容器处于停止状态,操作系统会将容器中的进程“杀死”,容器关联的内存回收下来,只有文件系统会被保留下来。如果我们还需要,只能重新start一个新的进程(容器),可以形象的理解为“投胎”。

案例一:创建并运行一个容器(nginx)

需求:创建并运行nginx容器的命令

docker run --name containerName -p 80:80 -d nginx

由于该命令比较复杂,我们可以通过查看DockerHub来创建:Nginx – 官方图片|Docker Hub

我们可以用官网描述的这个方式来创建

Docker最新超详细教程——安装与部署

命令解读

Docker最新超详细教程——安装与部署

默认情况下容器是隔离环境,我们直接访问宿主机的80端口,肯定访问不到容器中的ngin。

容器是对外隔离的,任何请求来访问容器都会被拒绝, 所以我们这边将容器与主机的端口做映射,用户通过访问主机的端口来间接访问容器。

详细步骤

(1)创建一个名为 nginxname 的容器

首先我们已经有了nginx的镜像(没有的话先创建…)

docker run --name nginxname -p 80:80 -d nginx

容器名为 nginxname ,端口映射为80:80,镜像名称为nginx

Docker最新超详细教程——安装与部署

(2)访问nginx容器

然后我们就可以通过 IP + 端口 的方式访问

Docker最新超详细教程——安装与部署

(3)查看日志

使用 docker logs nginxname(容器名)查看日志

Docker最新超详细教程——安装与部署

由于我们刚刚有对nginx进行访问,所以这里就会有GET请求的日志

案例二:进入容器,修改文件

需求:进入Nginx容器,修改HTML文件内容,添加“你好 Harmony3.0”

命令解读

docker exec -it mn bash

docker exec :进入容器内部,执行一个命令

-it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互

mn :要进入的容器的名称

bash:进入容器后执行的命令,bash是一个linux终端交互命令

停止容器stop && 查看容器ps

学习完上面的两个案例,Docker的命令大体都了解了,但是还有几个在上面的案例中没有用到,我们目前就在来演示一下!

我们先将之间创建的名为nginxname容器停止

docker stop nginxname

此时如果我们只是使用docker ps不加参数的话是查看不到该容器的!

可以看看 docker ps –help 中的面描述

我们要加上 -a 这个参数就可以看到刚刚停止的容器了!!!

docker ps -a

删除容器rm

(我们先将stop的容器启动),直接使用rm删除,可以发现失败了

通过查看,想要加上参数 -f 表明强制执行

docker rm -f nginxname

或者在nginxname处于 stop状态 的时候,可以直接 rm 掉!!!

小结

我们就算用docker完成了安装和部署,以及docker的一些详细操作,还有许多有意思的东西,列如docker compose编排微服务,kubernetes容器编排等等,下期给大家介绍,希望大家多多关注,谢谢。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
小河于的头像 - 宋马社区
评论 共1条

请登录后发表评论