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:使用
systemdsudo 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:使用
ufwsudo ufw allow 2375/tcp # Docker API sudo ufw allow 2376/tcp # Docker TLS -
CentOS:使用
firewalldsudo firewall-cmd --permanent --add-port=2375/tcp sudo firewall-cmd --reload
6. 文件系统路径
-
Docker 数据目录:
- Ubuntu:
/var/lib/docker - CentOS:
/var/lib/docker(相同)
- Ubuntu:
-
配置文件:
- Ubuntu:
/etc/default/docker(旧版)或/etc/docker/daemon.json - CentOS:
/etc/sysconfig/docker(旧版)或/etc/docker/daemon.json
- Ubuntu:
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 应用本身在不同系统上的运行行为基本一致。
CLOUD技术笔记