在 CentOS 7 环境下,兼容性最好、最稳定且官方维护周期最长的 Docker 版本是 Docker Engine 19.03.x 系列(特别是 19.03.15)或 20.10.x 早期版本。
但这里有一个必须前置说明的关键背景:
CentOS 7 已于 2024 年 6 月 30 日停止维护(EOL)。Docker 官方也早已停止对 CentOS 7 的直接支持。因此,“兼容性最好”的定义需要分两层来看:
- 历史最佳实践:如果你还在运行旧系统,不想升级内核或迁移平台。
- 现实可行方案:如何在当前环境下安全地安装和使用 Docker。
一、为什么推荐 19.03.x / 20.10.x?
1. 内核依赖匹配
CentOS 7 默认使用的内核版本是 3.10.0。虽然这个内核很老,但它仍然支持 Docker 核心功能(如 cgroups v1、overlay2 存储驱动)。
- Docker 18.09+ 开始对较新内核特性有更好支持,但在 3.10 内核上表现依然稳定。
- Docker 24.0+ 及更高版本已正式移除对 CentOS 7 的支持,安装时可能遇到依赖冲突或启动失败问题。
2. 社区与文档成熟度
19.03.x 和 20.10.x 是长期支持(LTS)分支,在 CentOS 7 生态中经过多年验证,bug 最少,社区解决方案最多。
3. 软件源稳定性
Docker 官方 yum 源在后期版本中逐渐放弃对 CentOS 7 的 RPM 包构建,导致直接 yum install docker-ce 可能指向不存在的包或引发依赖地狱。而 19.03/20.10 仍有完整的历史包留存。
二、如何正确安装兼容版本?(实操建议)
不要直接使用最新的 docker-ce 仓库,而是锁定到特定版本。
步骤 1:卸载旧版 Docker(如有)
sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
步骤 2:配置 Docker 官方 YUM 源
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
步骤 3:安装指定版本的 Docker CE(以 20.10.21 为例)
# 列出可用版本
yum list docker-ce --showduplicates | sort -r
# 安装指定版本(例如 20.10.21)
sudo yum install -y docker-ce-20.10.21 docker-ce-cli-20.10.21 containerd.io-1.4.24
⚠️ 注意:
containerd.io的版本必须与 Docker CE 版本匹配,否则会导致服务无法启动。
步骤 4:启用并启动 Docker
sudo systemctl enable docker
sudo systemctl start docker
步骤 5:验证
docker version
docker info
三、重要注意事项(避坑指南)
1. 内核更新建议
CentOS 7 默认内核较老,建议通过 ELRepo 项目升级到 kernel-lt(长期支持内核)或 kernel-ml(主线内核),以获得更好的容器性能和安全性:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install -y kernel-lt
# 重启后选择新内核启动
这能显著提升 overlay2 文件系统的性能,并减少某些镜像拉取时的异常。
2. 存储驱动选择
确保使用 overlay2 作为存储驱动(Docker 18.09+ 默认即为 overlay2),它在 CentOS 7 上是唯一被广泛测试且稳定的驱动。
3. 防火墙与安全组
CentOS 7 使用 firewalld,如需暴露端口,请正确配置规则:
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload
4. 强烈建议:考虑迁移
由于 CentOS 7 已 EOL,存在安全风险且不再获得补丁,强烈建议将业务迁移至以下更现代的平台:
- AlmaLinux 8/9 或 Rocky Linux 8/9:CentOS 的精神继承者,兼容 RHEL,支持 Docker 最新版。
- Ubuntu 20.04/22.04 LTS:社区活跃,Docker 支持极佳。
- Debian 11/12:轻量稳定,适合云原生场景。
如果暂时无法迁移,至少应:
- 定期手动打内核补丁。
- 使用非 root 用户运行 Docker(通过
docker.sock权限控制)。 - 避免在生产环境运行高危或未审计的第三方镜像。
总结
| 项目 | 推荐值 |
|---|---|
| 最佳兼容版本 | Docker CE 20.10.21(或 19.03.15) |
| 配套 Containerd | 1.4.24 |
| 存储驱动 | overlay2 |
| 内核建议 | 升级至 kernel-lt 5.10+ |
| 长期建议 | 迁移至 AlmaLinux/Rocky Linux/Ubuntu |
记住:在 CentOS 7 上跑 Docker 是“维持现状”的策略,而非“面向未来”的选择。 如果条件允许,尽快完成操作系统层面的迁移才是根本解决之道。
云技术博客