Ubuntu Server和CentOS在Docker部署上有何差异?

Ubuntu Server 和 CentOS 在 Docker 部署上的差异主要体现在以下几个方面:

1. 包管理器与安装方式

  • Ubuntu:使用 apt 包管理器

    sudo apt update
    sudo apt install docker.io docker-compose

    或使用 Docker 官方仓库:

    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh
  • CentOS:使用 yum/dnf 包管理器

    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install docker-ce docker-ce-cli containerd.io

2. 服务管理

  • Ubuntu:使用 systemd

    sudo systemctl start docker
    sudo systemctl enable docker
  • CentOS 7+:同样使用 systemd,但早期版本可能使用 service 命令

    sudo systemctl start docker
    sudo systemctl enable docker

3. 存储驱动差异

  • Ubuntu:默认使用 overlay2,对 ext4/xfs 支持良好
  • CentOS:默认也是 overlay2,但需要内核版本 ≥ 3.10,且 XFS 需要 ftype=1

4. SELinux 配置

  • CentOS:默认启用 SELinux,需要额外配置

    sudo setenforce 0  # 临时关闭
    # 或调整 SELinux 策略
    sudo semanage permissive -a docker_t
  • Ubuntu:默认使用 AppArmor,配置相对简单

5. 防火墙管理

  • Ubuntu:使用 ufw

    sudo ufw allow 2375/tcp  # Docker API
    sudo ufw allow 2376/tcp  # Docker TLS
  • CentOS:使用 firewalld

    sudo firewall-cmd --permanent --add-port=2375/tcp
    sudo firewall-cmd --reload

6. 文件系统路径

  • Docker 数据目录

    • Ubuntu:/var/lib/docker
    • CentOS:/var/lib/docker(相同)
  • 配置文件

    • Ubuntu:/etc/default/docker(旧版)或 /etc/docker/daemon.json
    • CentOS:/etc/sysconfig/docker(旧版)或 /etc/docker/daemon.json

7. 内核要求与兼容性

  • Ubuntu:通常使用较新内核,对 Docker 新特性支持更好
  • CentOS:内核版本相对保守,稳定性高但可能缺少最新特性

8. Docker Compose 安装

  • Ubuntu:可通过 apt 安装较旧版本,或使用官方方法

    sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • CentOS:类似,但需注意权限和依赖

9. 生产环境建议

  • 选择 Ubuntu 如果

    • 需要最新 Docker 特性
    • 开发环境或快速原型
    • 社区支持丰富
  • 选择 CentOS 如果

    • 企业环境,强调稳定性
    • 需要长期支持版本
    • 已有 CentOS 运维经验

10. 实际部署示例差异

Ubuntu 部署 Nginx:

sudo apt update
sudo apt install docker.io
sudo docker run -d -p 80:80 --name nginx nginx

CentOS 部署 Nginx:

sudo yum install -y docker
sudo systemctl start docker
sudo docker run -d -p 80:80 --name nginx nginx

总结

虽然 Docker 本身是跨平台的,但底层系统的差异会影响:

  • 安装和配置过程
  • 安全策略(SELinux vs AppArmor)
  • 网络和存储配置
  • 系统集成方式

核心建议:选择哪个系统主要取决于团队熟悉度、现有基础设施和企业策略,Docker 应用本身在不同系统上的运行行为基本一致。

云服务器