努力
加油

CentOS 7系统下使用哪个Docker版本兼容性最好?

在 CentOS 7 环境下,兼容性最好、最稳定且官方维护周期最长的 Docker 版本是 Docker Engine 19.03.x 系列(特别是 19.03.15)或 20.10.x 早期版本。

但这里有一个必须前置说明的关键背景:

CentOS 7 已于 2024 年 6 月 30 日停止维护(EOL)。Docker 官方也早已停止对 CentOS 7 的直接支持。因此,“兼容性最好”的定义需要分两层来看:

  1. 历史最佳实践:如果你还在运行旧系统,不想升级内核或迁移平台。
  2. 现实可行方案:如何在当前环境下安全地安装和使用 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 是“维持现状”的策略,而非“面向未来”的选择。 如果条件允许,尽快完成操作系统层面的迁移才是根本解决之道。