Docker02-安装与配置
Docker 安装与配置:RHEL/Debian 部署实战
目录
- 安装前的准备
- 在 RHEL/Rocky 上用阿里云源安装 Docker Engine
- 在 Ubuntu/Debian 上用阿里云源安装 Docker Engine
- 启动 Docker 服务并验证
- 配置国内镜像加速器
- RHEL 与 Debian 安装差异总结
- 常见安装问题排查
- 总结
- 参考资料
0. 安装前的准备
0.1 推荐用阿里云镜像源
Docker Engine 不在任何发行版的默认仓库里,必须添加 Docker 官方的软件源才能安装。但在中国大陆,直接访问 Docker 官方源可能很慢甚至超时。
阿里云开源镜像站(https://developer.aliyun.com/mirror/docker-ce)提供了 Docker CE 源的国内加速镜像,把软件源地址指向它,下载速度会快很多。本系列的安装步骤就以阿里云源为例;如果你在海外,直接换回 Docker 官方源即可,命令结构完全一样,只是仓库地址不同。
0.2 版本选择说明
- Docker CE(Community Edition,社区版)是免费的开源版本,本系列安装的就是它,对应软件包:
docker-ce、docker-ce-cli、containerd.io。 - Docker EE(Enterprise Edition,企业版)需要商业订阅,个人学习和一般生产用不到。
- 新版 Docker 还带有
docker-buildx-plugin(多架构构建)和docker-compose-plugin(Compose v2 插件),安装时一并装上。
0.3 最低要求
- 64 位 Linux(x86_64 / aarch64 均可);
- 内核版本建议 3.10 以上(Rocky 9 / RHEL 9 / Ubuntu 22.04+ 都满足);
- 需要 root 权限(
sudo); - 能访问外网(拉取软件源和镜像)。
一、在 RHEL/Rocky 上用阿里云源安装 Docker Engine
RHEL 家族(RHEL / Rocky / CentOS Stream / AlmaLinux)使用 dnf(CentOS 7 用 yum)管理软件包。下面是完整步骤。
1.1 安装必要的系统工具
yum-utils 提供 yum-config-manager 命令,用于管理软件源。在 RHEL 8/9、Rocky 上,yum 是 dnf 的别名,下面用 dnf:
sudo dnf install -y yum-utils
1.2 添加阿里云的 Docker CE 软件源
使用 yum-config-manager 添加仓库。阿里云镜像站的仓库文件地址是:
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
注意:这里仓库路径写的是
/centos/,但 RHEL/Rocky/CentOS Stream 通用同一个 docker-ce 源文件,阿里云把这个源同时用于整个 RHEL 家族。添加后可用cat /etc/yum.repos.d/docker-ce.repo查看内容,仓库名是docker-ce-stable。
如果希望使用 Docker 官方源而不是阿里云源,把上面地址换成:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
1.3 安装 Docker Engine 及插件
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
这一步会安装:
docker-ce:Docker 引擎(守护进程dockerd);docker-ce-cli:docker命令行客户端;containerd.io:底层容器运行时;docker-buildx-plugin:多架构构建插件(buildx);docker-compose-plugin:Compose v2 插件(docker compose子命令)。
1.4 安装指定版本(可选)
如果需要锁定某个版本(生产环境常这样),先列出可用版本:
dnf list docker-ce.x86_64 --showduplicates | sort -r
然后安装指定版本(VERSION 换成上面列表里的版本号):
sudo dnf install -y docker-ce-[VERSION] docker-ce-cli-[VERSION] containerd.io
二、在 Ubuntu/Debian 上用阿里云源安装 Docker Engine
Debian 家族(Ubuntu / Debian)使用 apt 管理软件包,安装方式与 RHEL 差异较大,关键是 GPG 公钥信任 + 写入软件源 两步。下面是阿里云源的完整步骤。
2.1 安装必要工具并准备 keyrings 目录
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
2.2 信任 Docker 的 GPG 公钥
把阿里云镜像的 Docker GPG 公钥下载并转换成 apt 需要的格式,放到 keyrings 目录:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
这一步的作用是让 apt 信任来自这个仓库的软件包签名。
gpg --dearmor把 ASCII 格式的公钥转成二进制,chmod a+r保证所有用户可读。
2.3 写入软件源信息
根据系统代号($(. /etc/os-release && echo "$VERSION_CODENAME"))自动写入正确的源:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Debian 用户把源地址里的
/ubuntu/换成/debian/,其余结构相同。signed-by指向第 2.2 步生成的公钥文件,apt 用它对仓库签名做校验。
2.4 安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装指定版本(可选):
apt-cache madison docker-ce
sudo apt-get install -y docker-ce=<VERSION> docker-ce-cli=<VERSION> containerd.io
三、启动 Docker 服务并验证
3.1 启动并设为开机自启
RHEL/Rocky 和 Ubuntu 都使用 systemd,命令一致:
sudo systemctl enable --now docker
sudo systemctl status docker
enable 设置开机自启,--now 立即启动。查看状态应显示 active (running)。
3.2 验证版本
docker version
输出会分为 Client 和 Server 两部分。重点看 Server 部分是否正常返回(说明守护进程已启动),以及 Docker 版本号(如 27.x)。
如果
docker version只显示 Client 而没有 Server,说明dockerd没起来,先systemctl status docker看日志。
3.3 运行 hello-world 冒烟测试
docker run hello-world
能打印出 Docker 的欢迎信息,说明安装成功且能正常拉取、运行容器。
3.4 让普通用户免 sudo 运行 docker(可选)
默认只有 root 或 sudo 用户能执行 docker 命令。把用户加入 docker 组即可免 sudo:
sudo usermod -aG docker $USER
# 重新登录(或 newgrp docker)后生效
安全提示:加入
docker组等于把该用户提升为近似 root 的权限(容器逃逸风险),生产环境要谨慎,只在可信的开发和测试机这么做。
四、配置国内镜像加速器
4.1 为什么需要加速
docker pull 默认从 Docker Hub 拉取镜像,国内访问常常很慢。配置镜像加速器后,Docker 会优先从加速器拉取。
4.2 配置方法
编辑 /etc/docker/daemon.json(不存在则创建),加入 registry-mirrors:
{
"registry-mirrors": [
"https://docker.m.daocloud.io"
]
}
加速地址会随政策变化,常用的有阿里云个人加速器(在阿里云控制台「容器镜像服务-镜像加速器」获取专属地址)、DaoCloud(
https://docker.m.daocloud.io)等。若某个地址失效,换一个即可。
改完重启 Docker 生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
4.3 验证加速是否生效
docker info | grep -A 3 "Registry Mirrors"
能看到你配置的加速地址即生效。
五、RHEL 与 Debian 安装差异总结
| 步骤 | RHEL/Rocky | Ubuntu/Debian |
|---|---|---|
| 包管理器 | dnf(CentOS 7 用 yum) |
apt |
| 系统工具 | yum-utils(提供 yum-config-manager) |
ca-certificates curl gnupg |
| 添加源 | yum-config-manager --add-repo ...repo |
下载 GPG 公钥 + 写入 .list 源 |
| GPG 信任 | 仓库文件自带,无需单独处理 | 需 gpg --dearmor 转公钥并 signed-by 引用 |
| 安装包名 | docker-ce 等,命令相同 |
同左 |
| 启动服务 | systemctl enable --now docker |
同左 |
核心差异就一句话:RHEL 系用「添加 .repo 仓库文件」一步完成,Debian 系需要「信任公钥 + 写入源」两步。安装后的 docker-ce 包名、systemd 服务、docker 命令在各发行版完全一致。
六、常见安装问题排查
6.1 装完后 docker version 没有 Server 部分
守护进程没起来。查看原因:
sudo systemctl status docker
sudo journalctl -u docker -n 50
常见原因:内核/iptables 兼容问题、磁盘满、之前装过冲突的包。
6.2 添加源时报 GPG 或仓库校验错误
- RHEL:确认
/etc/yum.repos.d/docker-ce.repo内容正确,必要时sudo dnf clean all && sudo dnf makecache清缓存; - Debian:确认
/etc/apt/keyrings/docker.gpg存在且可读,signed-by路径与之一致。
6.3 拉取镜像慢或超时
先确认镜像加速器配置生效(第 4 章),再确认网络能访问加速地址。若个别镜像仍失败,可尝试 docker pull 指定其他镜像源。
6.4 之前装过旧版 Docker / 或与 Podman 冲突
如果之前用系统仓库装过旧 docker(或容器运行时冲突),先卸载再重装:
sudo dnf remove docker docker-client docker-common docker-engine # RHEL
sudo apt-get remove docker docker-engine docker.io # Debian
然后按本系列步骤重装。
6.5 SELinux 相关(RHEL 特有)
RHEL 默认开启 SELinux(enforcing)。Docker 官方仓库装的 docker-ce 已适配 SELinux,通常无需额外处理。若遇到挂载卷或容器启动的权限报错,可查看 /var/log/audit/audit.log,并参考「是否标记为 container_file_t」的判断(初级 Podman 篇有详细说明)。不建议直接 setenforce 0 关闭 SELinux,而是按正确类型标记。
七、总结
- RHEL 家族用「
yum-config-manager --add-repo添加阿里云 docker-ce 源」再dnf install;Debian 家族用「信任 GPG 公钥 + 写入源」再apt install,这是两者最大的安装差异; - 安装包统一是
docker-ce、docker-ce-cli、containerd.io,外加 buildx 和 compose 插件; - 用
systemctl enable --now docker启动并开机自启,docker version/docker run hello-world验证; - 配置
/etc/docker/daemon.json的registry-mirrors做国内镜像加速; - 想让普通用户免 sudo,加入
docker组(注意安全风险)。
参考资料
- 阿里云开源镜像站 docker-ce(本系列安装步骤参考):https://developer.aliyun.com/mirror/docker-ce
- Docker Engine 安装(RHEL):https://docs.docker.com/engine/install/rhel/
- Docker Engine 安装(Ubuntu):https://docs.docker.com/engine/install/ubuntu/
- 配置镜像加速器(Docker daemon.json registry-mirrors):https://docs.docker.com/engine/daemon/
- 阿里云容器镜像服务-镜像加速器:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
