【容器化】快速安装docker-ce

注意

本文基于CentOS 7
docker中的ce代表开源版,ee代表企业版

1 安装相关组件

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

-y, --assumeyes 安装过程中默认选择是

yum-utils 是一个工具包,简化安装过程中配置安装源的过程

device-mapper-persistent-data lvm2 使用docker存储数据必须安装的驱动包

2 添加国内安装源

yum-config-manager --add-repo  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3 安装Docker程序

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

4 启动

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

5 常见问题

5.1 无外网访问权限

安装过程中需要访问外网,如果服务器没有外网访问权限,需要申请。常见的请求地址包括:

  • http://mirror.centos.org
  • https://mirrors.aliyun.com
  • https://production.cloudflare.docker.com
  • https://registry-1.docker.io
5.2 缺少相关依赖

例:问题信息如下,主要关注“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。

5.3 Docker与iptables冲突
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

你可能感兴趣的:(运维,服务器,docker,centos,linux)