文章目录
一、前提条件和注意事项
-
要安装 Docker Engine 最低需要 CentOS 7 .
-
本文下面步骤中的命令都是在 root 账户下执行的,所以请先用 root 账户登录后再执行命令,或者使用 sudo 命令,为普通的命令授权,临时以 root 身份执行命令。
二、删除旧版本的 Docker(可选)
旧版本的 Docker 被称为docker
或docker-engine
,Docker 引擎包现在称为docker-ce
.。如果之前安装过这些旧版本的 Docker,可以使用下面的命令删除它们以及相关的依赖项:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
注:这里的
\
表示命令的拼接,告诉系统这个命令没有结束,要接着往下读。如果一个命令太长,一行写不下,或者觉得换一行可读性更强,我们都可以加\
.
三、安装 Docker
第1步:安装必要的一些系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
第2步:添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
注:这里使用到了阿里的镜像源
第3步:编辑文件
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
注:sed 命令详情可参考:https://www.gnu.org/software/sed/manual/sed.html
第4步:将软件包信息提前在本地索引缓存
yum makecache fast
注:该命令详情可参考:https://blog.csdn.net/A___LEi/article/details/118340579
第5步:安装
yum -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin
第6步:启动 Docker 服务
systemctl start docker
第7步:验证 Docker 服务是否启动成功
方式一:查看 Docker 服务的状态
systemctl status docker
执行命令后,可以看到,这里状态是 active (running) 说明 Docker 服务启动成功。
方式二:查看 Docker 的版本
docker -v
执行命令后,如果能成功查看到版本,说明 Docker 的安装和启动是没问题的。
第8步:配置阿里云镜像加速
因为从官方的镜像仓库拉取镜像会比较慢,所以最好配置一下阿里云镜像加速,首先进入到阿里云的镜像加速器文档,然后登录阿里云账号,在操作文档中选择CentOS
,最后按文档的步骤来进行操作即可。
第9步:运行 hello-world 镜像验证 Docker 能否正常使用
docker run hello-world
执行命令后,可以看到 Docker 成功拉取和运行了 hello-world 镜像,至此 Docker 成功安装。
四、设置 Docker 服务开机自启动
因为本文是在虚拟机软件中安装了 CentOS7 系统,然后再在此基础上安装的 Docker 服务,所以如果不设置 Docker 服务开机自启的话,虚拟机关闭后再打开时,Docker 服务就需要自己手动启动,如下图所示:
为了方便以后虚拟机开机后,Docker 服务能够自动启动,我们可以设置 Docker 服务开机自启,命令如下所示:
systemctl enable docker
执行命令后,关闭虚拟机再次开机时查看 Docker 服务的状态,可以看到 Docker 服务已经启动了,说明 Docker 服务开机自启设置成功。
五、配置 Docker Compose
1. 验证 Docker Compose 是否已正确安装
docker compose version
执行命令后,如下图所示成功输出版本号,说明 Docker Compose 已正确安装
2. 添加执行权限和移动位置
首先,查找 Docker Compose 的位置
find / -name docker-compose
查找到 Docker Compose 的位置,如下图所示:
然后,给 Docker Compose 添加执行权限
chmod +x /usr/libexec/docker/cli-plugins/docker-compose
最后,将 Docker Compose 移动到/usr/local/bin
目录下
mv /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin
六、解决防火墙不能控制 Docker 容器端口的问题
Docker 在运行容器的会修改 iptables,从而导致防火墙不能控制 Docker 容器端口
解决办法:
vim /etc/docker/daemon.json
在/etc/docker/daemon.json
文件中添加:
{
"iptables": false
}
systemctl daemon-reload
systemctl restart docker