这里只介绍 centOS 环境下安装 Docker,其他环境有机会再补充。
CentOS环境下安装Docker
:::warning 警告:切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装 Docker。 :::
环境要求
Docker 目前支持 64 位版本 CentOS 7/8,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2
存储层驱动)无法使用,并且部分功能可能不太稳定。
卸载旧版本
旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本。
> sudo yum remove docker docker-client docker-client-latest docker-common docker-latest \
docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux \
docker-engine
使用 yum 命令安装
**
首先,执行以下命令安装依赖包:
> sudo yum install -y yum-utils
鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。
执行下面的命令添加 yum
软件源:
# 阿里云源
> sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 官方源
# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
如果需要测试版本的 Docker 请执行以下命令:
> sudo yum-config-manager --enable docker-ce-test
安装 Docker
**
更新 yum
软件源缓存,并安装 docker-ce
:
> sudo yum udpate
> sudo yum install docker-ce docker-ce-cli containerd.io
CentOS8 额外设置
**
由于 CentOS8 防火墙使用了 nftables
,但 Docker 尚未支持 nftables
, 我们可以使用如下设置使用 iptables
:
更改 /etc/firewalld/firewalld.conf
:
# FirewallBackend=nftables
FirewallBackend=iptables
或者执行如下命令:
> firewall-cmd --permanent --zone=trusted --add-interface=docker0
> firewall-cmd --reload
启动 docker
> sudo systemctl enable docker
# or
> sudo systemctl start docker
建立docker用户组
默认情况下,docker
命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root
用户和 docker
组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root
用户。因此,更好地做法是将需要使用 docker
的用户加入 docker
用户组。
> sudo groupadd docker # 建立docker组
> sudo usermod -aG docker $USER # 将当前用户加入docker组
退出当前终端并重新登录,进行如下测试。
测试docker是否安装成功
> docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
d1725b59e92d: Pull complete
Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
....
....
若能正常输出以上信息,则说明安装成功。
镜像加速
如果在使用过程中发现拉取 Docker 镜像十分缓慢,可以配置 Docker 国内镜像加速。
这里以 网易云 镜像服务 [https://hub-mirror.c.163.com](https://hub-mirror.c.163.com)
为例进行介绍。
Ubuntu 16.04+、Debian 8+、CentOS 7+
**
请首先执行以下命令,查看是否在 docker.service
文件中配置过镜像地址。
> systemctl cat docker | grep '\-\-registry\-mirror'
如果该命令有输出,那么请执行 $ systemctl cat docker
查看 ExecStart=
出现的位置,修改对应的文件内容去掉 --registry-mirror
参数及其值,并按接下来的步骤进行配置。
如果以上命令没有任何输出,那么就可以在 /etc/docker/daemon.json
中写入如下内容(如果文件不存在请新建该文件):
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
:::warning 注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。 :::
之后重新启动服务。
> sudo systemctl daemon-reload
> sudo systemctl restart docker
配置docker服务
Docker 服务启动时实际上是调用了 dockerd 命令,支持多种启动参数。因此,用户可以直接通过执行 dockerd 命令来启动 Docker 服务,如下面的命令启动 Docker 服务,开启 Debug 模式,并监听在本地的 2376 端口:
> dockerd -D -H tcp://127.0.0.1:2376
这些选项可以写入 /etc/docker/ 路径下的 daemon.json 文件中,由 dockerd 服务启动时读取:
{
"debug":true,
"hosts": ["tcp://127.0.0.1:2376"]
}
配置完记得重启服务。
添加内核参数
如果在 CentOS 使用 Docker 看到下面的这些警告信息:
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
请添加内核配置参数以启用这些功能。
> sudo tee -a /etc/sysctl.conf <<-EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
然后重新加载 sysctl.conf
即可:
> sudo sysctl -p
to be continue…