本文基于CentOS 7
docker中的ce代表开源版,ee代表企业版
yum install -y yum-utils device-mapper-persistent-data lvm2
-y
, --assumeyes 安装过程中默认选择是
yum-utils
是一个工具包,简化安装过程中配置安装源的过程
device-mapper-persistent-data lvm2
使用docker存储数据必须安装的驱动包
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce
安装特定的版本
# 列出可用的版本
yum list docker-ce --showduplicates | sort -r
# 选择一个版本安装
yum install -y docker-ce-[version] docker-ce-cli-[version] containerd.io
说明:
docker版本有很多,其中18.09.1表示的是18年9月发布的版本,如:
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.2.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.1.ce-1.el7.centos docker-ce-stable
其中版本号带冒号的,可以直接忽略冒号及冒号之前的,忽略“-”及“-”之后的,如3:18.09.1-3.el7
-> version =18.09.1
systemctl start docker
执行完毕我们看一下docker的状态是否正常:
systemctl status docker
如果显示active(running)
就说明安装完毕了。
再输出docker版本号,确认docker运行正常。
> docker version
Client: Docker Engine - Community
Version: 20.10.16
API version: 1.41
Go version: go1.17.10
Git commit: aa7e414
Built: Thu May 12 09:19:45 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.16
API version: 1.41 (minimum version 1.12)
Go version: go1.17.10
Git commit: f756502
Built: Thu May 12 09:18:08 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.4
GitCommit: 212e8b6fa2f44b9c21b2798135fc6fb7c53efc16
runc:
Version: 1.1.1
GitCommit: v1.1.1-0-g52de29d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
安装过程中需要访问外网,如果服务器没有外网访问权限,需要申请。常见的请求地址包括:
例:问题信息如下,主要关注“Error:”的描述,把“Error”中提到的包下载安装完毕后,重装docker即可。
Error: Package: 3:docker-ce-18.09.9-3.el7.x86_64 (docker-ce-stable)
Requires: container-selinux >= 2:2.74
Error: Package: containerd.io-1.4.12-3.1.el7.x86_64 (docker-ce-stable)
Requires: container-selinux >= 2:2.74
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
解决办法
yum install -y container-selinux
如果出现以下情况说明当前源缺少这个包
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
No package container-selinux available.
Error: Nothing to do
可以通过https://centos.pkgs.org/下载到本地,然后安装:
rpm -ivh container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
安装过程中如果还缺少哪些依赖,想办法安装后,重新执行上面的安装命令即可。
安装成功后,重新尝试安装Docker。
ERROR: COMMAND_FAILED: '/sbin/iptables -w2 -t nat -C DOCKER -i docker0 -j RETURN' failed: iptables: Bad rule (does a matching rule exist in that chain?).
ERROR: COMMAND_FAILED: '/sbin/iptables -w2 -D FORWARD -i docker0 -o docker0 -j DROP' failed: iptables: Bad rule (does a matching rule exist in that chain?).
ERROR: INVALID_ZONE: docker
检查/etc/docker/daemon.json文件是否存在,如果不存在,就创建
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
致小白:
cd /etc/docker
ls
查看一下是否有daemon.json文件
如果没有,直接vim daemon.json,添加上面的内容
(按insert后粘贴,否则会丢头部几个字符)
(按esc退出insert模式,shift+:,输入wq回车,保存并退出文件)
如果存在daemon.json文件,就在文件中添加"iptables":false
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"iptables":false
}
重新启动docker
systemctl start docker