努力
加油

阿里云服务器运行Docker,推荐安装Ubuntu还是CentOS?

先说结论:目前强烈建议首选 Ubuntu(尤其是 20.04 LTS 或 22.04 LTS),或者 Debian。

CentOS 8 已经停止维护(EOL),虽然你可以用 CentOS Stream 或者 Rocky Linux/AlmaLinux 作为替代,但在国内阿里云生态中,Ubuntu 的兼容性和社区支持度要远高于当前的 CentOS 系列。

下面从几个核心维度给你拆解为什么这么选,以及在实际操作中需要注意的坑。

1. 现状与生命周期(最核心的劝退理由)

  • CentOS 的尴尬处境:

    • CentOS 8 已于 2021 年底正式终止维护。这意味着你不再收到安全补丁和 Bug 修复。在云服务器上跑一个没有安全更新的系统,风险极大。
    • CentOS 7 虽然还在 ELS(扩展生命周期服务)期内,但那是付费支持的,且内核版本较老(3.10),对某些新特性的 Docker 支持不如新内核友好。
    • 如果你坚持用 RedHat 系,现在主流转向了 Rocky Linux 或 AlmaLinux,或者直接使用 CentOS Stream。但这两个发行版在国内的镜像源速度、文档丰富程度、第三方软件包支持上,依然略逊于 Ubuntu/Debian。
  • Ubuntu 的优势:

    • 拥有明确的 LTS(长期支持)版本,每两年发布一次,提供 5 年的标准支持。
    • Docker 官方文档、各类开源项目(如 Kubernetes, Prometheus, Nginx 等)的首选测试平台通常是 Ubuntu。
    • 阿里云控制台提供的“公共镜像”中,Ubuntu 的更新频率和维护力度通常优于 CentOS。

2. 阿里云环境下的实操体验

在阿里云 ECS 上运行 Docker,有几个具体的技术点需要考虑:

A. 内核参数与 cgroups

Docker 依赖 Linux 内核特性。Ubuntu 20.04+ 默认使用 systemd 管理容器,且内核版本较新(5.4+ 或 5.15+),对 cgroups v2 的支持更好。

  • 注意:新版 Docker(20.10+)默认启用 cgroups v2。Ubuntu 22.04 默认就是 cgroups v2,配置起来反而更简单。CentOS 7 是 cgroups v1,很多新工具需要额外配置才能完美运行。

B. 软件包安装便利性

  • Ubuntu: apt 命令直观,snap 或 ppa 获取最新版软件很方便。Docker 官方提供的 apt 仓库非常稳定。
  • CentOS/Rocky: yum/dnf 虽然也成熟,但很多第三方库(如 Node.js, Python 新版本)在 EPEL 中的同步速度有时不如 Ubuntu 的 Universe/Multiverse 仓库快。

C. 阿里云专属优化

阿里云为 Ubuntu 提供了较好的云助手(Cloud Assistant)和云监控插件支持。虽然 CentOS 也有,但由于用户基数变化,Ubuntu 的自动化运维脚本和社区模板更多。

3. 如果非要用 RedHat 系怎么办?

如果你的团队有严格的合规要求,必须使用 RHEL 兼容系统,那么请按以下优先级选择:

  1. Rocky Linux 9 / AlmaLinux 9:这是 CentOS 的精神继承者,完全二进制兼容 RHEL 9,内核较新(5.14+),安全性好,适合生产环境。
  2. CentOS Stream 9:滚动更新模型,适合开发测试,但不推荐用于关键生产服务器。
  3. Amazon Linux 2023:如果你在阿里云上跑的是 AWS 迁移过来的架构,AL2023 也是个不错的选择,它轻量、安全、专为云优化。

4. 避坑指南(无论选哪个都必看)

  1. 不要直接用 root 运行 Docker:
    创建普通用户并加入 docker 组:

    sudo usermod -aG docker $USER
    # 注销重新登录生效
  2. 防火墙设置:
    阿里云的安全组(Security Group)是第一道防线,务必在控制台放行端口。
    系统内部建议使用 ufw (Ubuntu) 或 firewalld (CentOS/Rocky)。

    • Ubuntu: sudo ufw allow 80/tcp
    • CentOS: sudo firewall-cmd --permanent --add-port=80/tcp && sudo firewall-cmd --reload
  3. Swap 分区问题:
    Docker 在新版本中默认要求禁用 Swap 或将其标记为不活跃。如果你发现 Docker 启动报错,检查 /proc/sys/vm/swappiness 是否为 0。

  4. 时区设置:
    云服务器默认可能是 UTC 时间。如果你的应用强依赖北京时间,请在初始化时设置:

    timedatectl set-timezone Asia/Shanghai

总结建议

场景 推荐操作系统 理由
个人项目、初创公司、大多数微服务 Ubuntu 22.04 LTS 社区资源最多,Docker 兼容性最好,上手最快
国企、XX、强合规要求 Rocky Linux 9 / AlmaLinux 9 RHEL 兼容,安全审计通过率高,替代 CentOS 的最佳选择
追求极致轻量、嵌入式 IoT 网关 Alpine Linux 镜像极小,但调试困难,仅限高级用户
避免使用 CentOS 7/8 已停更,安全风险高,新特性支持差

最终建议:直接购买阿里云 Ubuntu 22.04 LTS 公共镜像,然后按照 Docker 官方文档一键安装即可。这是目前国内互联网行业最稳妥、最高效的选择。