如果之前有安装过旧版本的 Docker (docker, docker.io, docker-engine),要先卸载后才能安装最新版 Docker。

本文撰写时 Debian 的版本为 10.7,CentOS 的版本为 7.9.2009,Docker的版本为 20.10.2。操作系统 或者 Docker 版本不同时,操作过程可能会略有差异。Debian 和 CentOS 命令不同时,分别在各自的 Tab页分开显示。

出于安全性考虑,一般不用 root 用户直接进行操作,而是给普通用户授予 sudo 权限,在命令前面加上 sudo 来临时提升权限。用 root 用户执行以下命令(用实际的用户名替换 $USER_NAME)即可给普通用户授予 sudo 权限。

# usermod -aG sudo $USER_NAME
# usermod -aG wheel $USER_NAME

卸载旧版本的 Docker

$ sudo apt remove docker \
docker-engine \
docker.io \
containerd \
runc
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

如果您的系统之前没有安装过旧版本的 Docker,则无需执行上述卸载命令,即便执行了也没有任何副作用,只是会提示所卸载的包不存在。

注意:上述卸载命令并不会删除路径 /var/lib/docker/下的内容,此路径下所包含的 Docker 数据(镜像、容器、卷、网络)可以在新版 Docker下继续使用。最新版 Docker 的安装包名为 docker-ce.

从阿里云镜像源安装 Docker

安装必要的系统工具

$ sudo apt update
$ sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
$ sudo yum install -y \
yum-utils \
device-mapper-persistent-data \
lvm2

安装 GPG 证书

$ curl -fsSL \
https://mirrors.aliyun.com/docker-ce/linux/debian/gpg \
| sudo apt-key add -

CentOS 7 不需要安装 GPG 证书

添加软件源信息

$ sudo add-apt-repository \
"deb [arch=amd64] \
https://mirrors.aliyun.com/docker-ce/linux/debian \
$(lsb_release -cs) stable"
$ sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新并安装 Docker

$ sudo apt update
$ sudo apt install -y \
docker-ce \
docker-ce-cli \
containerd.io
$ sudo yum makecache fast
$ sudo yum install -y \
docker-ce \
docker-ce-cli \
containerd.io

验证安装是否成功

$ sudo docker run --rm hello-world
$ sudo systemctl start docker
$ sudo docker run --rm hello-world

如果命令运行后没有报错,且在控制台打印出 hello world 相关的信息,则表明 Docker 已被正确安装。

设置普通用户直接运行 docker

root 用户做如下配置后,就不用在运行 docker 命令时在前面加上 sudo 了。

$ sudo group add docker
$ sudo usermod -aG docker $USER
$ newgrp docker

然后,用不带 sudo 的 docker 命令验证一下。

$ docker run --rm hello-world

配置 Docker 开机自启动

$ sudo systemctl enable docker.service
$ sudo systemctl enable containerd.service

配置阿里云镜像加速器

因为网络原因,从 Docker 官方源下载比较大的镜像可能会需要很长的时间,甚至下载失败,好在阿里云容器 Hub 服务提供了官方的镜像站点加速官方镜像的下载速度。使用阿里云的镜像加速器,可以提升获取 Docker 官方镜像的速度。关于加速器的地址,需要先注册阿里云账号,并登录 容器镜像服务 的控制台,左侧边栏点击 镜像中心 => 镜像加速器,右侧就会显示为你独立分配的加速地址,以及不同系统的配置方法。

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

到此就算是全部配置完成了,以后再下载 docker 镜像就不会像以前那样慢了。