I. 卸载旧版本#
查看是否已安装
你的 Linux 发行版可能提供非官方的 Docker 软件包,它们可能与 Docker 提供的官方软件包冲突。 在安装官方版本的 Docker Engine 之前,必须卸载这些软件包。
1
2
3
4
5
6
7
8
9
10
| sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
podman \
runc
|
卸载 Docker 时,存储在 /var/lib/docker/ 中的映像、容器、卷和网络不会自动移除。
II. 安装 docker#
2.1 在 RHEL 上安装 Docker#
2.1.1 设置存储库#
安装 dnf-plugins-core 软件包(它提供了管理 DNF 资源库的命令)并设置资源库。
1
2
| sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
|
2.1.2 国内源替换#
1、阿里云源
1
| sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
|
2、清华源
1
| sudo sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
|
3、中科大源
1
| sudo sed -i 's+download.docker.com+mirrors.ustc.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
|
2.1.3 更新包管理器缓存#
1、确认存储库已正确添加
2、清理包管理器缓存
3、更新软件包管理器缓存
2.1.4 安装 Docker 引擎#
1、要安装最新版本,请运行:
1
| sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
如果提示接受 GPG 密钥,请验证指纹是否匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35,如果匹配,则接受。
这条命令会安装 Docker,但不会启动 Docker。 它还会创建一个 docker 组,但默认情况下不会向该组添加任何用户。
2、启动 Docker 引擎
1
| sudo systemctl enable --now docker
|
这将配置 Docker systemd 服务在启动系统时自动启动。 如果不想让 Docker 自动启动,请使用 sudo systemctl start docker 代替。
3、运行 hello-world 映像,验证安装是否成功:
1
| sudo docker run hello-world
|
III. 基础配置#
参考文档:Docker daemon configuration overview
Docker 守护进程将所有数据保存在一个目录中。这会跟踪与 Docker 相关的所有内容,包括容器、图像、卷、服务定义和机密。
默认情况下,此目录为:
- 在 Linux 上
/var/lib/docker - 在 Windows 上
C:\ProgramData\docker
3.1 更改默认存储目录#
创建一个 JSON 文件:
1
| /etc/docker/daemon.json
|
内容指向新的存储位置:
1
2
3
| {
"data-root": "/mnt/docker-data"
}
|
3.2 添加第三方加速镜像#
三方镜像加速(参考:GitHub
)
1
2
3
4
5
6
7
8
9
| {
"registry-mirrors": [
"https://docker.1panel.live",
"https://docker.1ms.run",
"https://hub.mirrorify.net/",
"https://docker.xuanyuan.me",
"https://hub.fast360.xyz/"
]
}
|
3.3 应用更改#
综合配置参考:
1
2
3
4
5
6
7
8
9
10
| {
"data-root": "/mnt/docker-data",
"registry-mirrors": [
"https://docker.1panel.live",
"https://docker.1ms.run",
"https://hub.mirrorify.net/",
"https://docker.xuanyuan.me",
"https://hub.fast360.xyz/"
]
}
|
重启 Docker 或重启系统:
1
2
| sudo systemctl daemon-reload
sudo systemctl restart docker
|
如果在重启过程中出现任何错误,请注意 daemon.json 中的空格。 JSON 文件对缩进很敏感,多余或缺少空格都可能导致错误。如果 Docker 重新启动正常,这个新设置将使 Docker 将所有新容器放置到新位置。但是,旧容器将保留在 /etc/default/docker 中。建议删除所有旧容器:
检查三方加速器是否生效
如果从结果中看到了如下内容,说明配置成功。
1
2
3
| Registry Mirrors:
[...]
https://docker.1panel.live
|
并再次下载它们:
1
| docker pull <container-name>
|
IV. 报错解决#
4.1 报错 1#
1
2
3
4
5
6
| 问题 1: 安装的软件包的问题 podman-4:4.9.4-23.module+el8.10.0+2064+309a12a4.x86_64
- package podman-4:4.9.4-23.module+el8.10.0+2064+309a12a4.x86_64 from @System requires runc >= 1.0.0-57, but none of the providers can be installed
....
- package containerd.io-1.7.28-1.el8.x86_64 from docker-ce-stable conflicts with runc provided by runc-1:1.1.12-6.module+el8.10.0+2001+6a33db9f.x86_64 from @System
问题 2: package podman-4:4.9.4-1.module+el8.10.0+1815+5fe7415e.x86_64 from appstream requires runc >= 1.0.0-57, but none of the providers can be installed
- package containerd.io-1.7.27-3.1.el8.x86_64 from docker-ce-stable conflicts with runc provided by runc-1:1.1.12-1.module+el8.10.0+1815+5fe7415e.x86_64 from appstream
|
问题原因:因为 Rocky 8 中已经安装了 podman 容器,再安装 docker 的时候会报以上错误。
查看是否已安装 Podman
卸载 Podman
1
2
| dnf remove podman
dnf remove buildah
|
V. 参考文档#
Docker 官方文档:https://docs.docker.com/
Ubuntu 安装文档:https://docs.docker.com/engine/install/ubuntu/
CentOS 官方文档:https://docs.docker.com/engine/install/centos/
Docker 历史版本:https://docs.docker.com/engine/release-notes/
Docker 阿里云源:docker-ce镜像 (aliyun.com)
Docker 清华源:docker-ce 清华大学开源软件镜像站
Docker 中科大源:Docker CE - USTC Mirror Help