在欧拉和CentOS中安装Docker的步骤有哪些差异?

在 OpenEuler(欧拉)和 CentOS 上安装 Docker,核心差异主要源于底层包管理器的不同以及官方源支持的变更。

CentOS 基于 RHEL 体系,默认使用 yum 或 dnf;而 OpenEuler 虽然也兼容 RPM 包,但其默认包管理器是 dnf(部分旧版本可能仍保留 yum 别名),且其软件仓库结构、GPG 密钥验证机制以及内核模块加载方式与 CentOS 存在细微差别。此外,自 CentOS 8 停止维护后,社区转向 Rocky Linux/AlmaLinux 或 Ubuntu/Debian,而 OpenEuler 作为华为主导的开源操作系统,其生态更倾向于使用 systemd 原生服务管理和较新的容器运行时标准。

以下是两者安装 Docker 的主要步骤差异对比及具体操作指南:


一、核心差异总结

对比项 CentOS (7/8) OpenEuler (20.03 LTS SP1+)
包管理器 yum 或 dnf 推荐 dnf(yum 通常为 dnf 软链接)
Docker 源配置 依赖 docker-ce.repo,需手动导入 GPG key 同样需要 repo 文件,但 GPG key 路径和验证策略更严格
依赖关系 依赖 containerd.io,有时需额外处理 cgroup v1/v2 兼容 对 cgroup v2 支持更好,需确保内核参数正确
服务管理 systemctl start docker 同上,但需注意 firewalld 与 iptables-nft 的兼容性
权限模型 默认用户可运行 docker(通过 sudo) 建议创建 docker 用户组并授权,安全策略更严格

⚠️ 注意:从 Docker 20.10+ 开始,官方推荐使用 Docker Engine + containerd,而非传统的 docker-io 包。OpenEuler 官方镜像源中可能不直接提供最新版的 Docker CE,因此通常仍需通过官方 Docker 源安装。


二、CentOS 安装 Docker 标准步骤(参考基准)

# 1. 卸载旧版本
sudo yum remove docker 
                  docker-client 
                  docker-client-latest 
                  docker-common 
                  docker-latest 
                  docker-latest-logrotate 
                  docker-logrotate 
                  docker-engine

# 2. 安装依赖
sudo yum install -y yum-utils

# 3. 设置稳定版仓库
sudo yum-config-manager 
    --add-repo 
    https://download.docker.com/linux/centos/docker-ce.repo

# 4. 安装 Docker Engine
sudo yum install docker-ce docker-ce-cli containerd.io

# 5. 启动并设为开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 6. 验证
docker version
docker run hello-world

三、OpenEuler 安装 Docker 的差异步骤

✅ 步骤 1:确认系统版本与架构

OpenEuler 分为 x86_64 和 aarch64(鲲鹏)架构,请确保下载对应架构的 repo 文件。

uname -m  # 输出应为 x86_64 或 aarch64
cat /etc/openeuler-release  # 确认版本号

✅ 步骤 2:清理潜在冲突包

OpenEuler 可能预装了 podman 或 buildah,若无需使用,建议卸载以避免端口或 socket 冲突:

sudo dnf remove -y podman buildah  # 如已安装

✅ 步骤 3:安装基础工具

OpenEuler 默认已集成 dnf,无需额外安装 yum-utils,但建议更新系统:

sudo dnf update -y
sudo dnf install -y dnf-plugins-core  # 确保包含 config-manager 插件

✅ 步骤 4:添加 Docker 官方仓库

⚠️ 关键差异点:OpenEuler 没有专门的 "openEuler" Docker 官方源,必须使用 CentOS/RHEL 通用源,但需注意 GPG 密钥验证。

# 添加 Docker CE 仓库(以 x86_64 为例)
sudo dnf config-manager 
    --add-repo 
    https://download.docker.com/linux/centos/docker-ce.repo

# 若为 aarch64,需手动修改 repo 文件中的 baseurl,或等待官方适配
# 目前 Docker 官方对 aarch64 的支持主要通过 centos/aarch64 通道

✅ 步骤 5:导入 GPG 密钥(重要!)

OpenEuler 对签名验证更严格,若出现 GPG key failed 错误,需手动导入:

sudo rpm --import https://download.docker.com/linux/centos/gpg

✅ 步骤 6:安装 Docker Engine

sudo dnf install docker-ce docker-ce-cli containerd.io

📌 注意:如果提示依赖冲突,可能是 libseccomp 版本过低。OpenEuler 22.03 LTS 及以上版本通常已满足要求。如仍报错,可尝试:

sudo dnf install libseccomp -y

✅ 步骤 7:配置非 root 用户使用 Docker(可选但推荐)

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

✅ 步骤 8:启动并验证

sudo systemctl start docker
sudo systemctl enable docker

# 检查防火墙是否放行
sudo firewall-cmd --permanent --add-service=docker
sudo firewall-cmd --reload

# 验证
docker info
docker run hello-world

四、常见坑点与解决方案

1. GPG 密钥验证失败

  • 现象:Public key for xxx.rpm is not installed
  • 解决:手动导入 GPG key(见上文步骤 5),或在 dnf.conf 中添加 gpgcheck=0(仅用于测试环境,生产环境不建议)。

2. containerd.io 依赖缺失

  • 现象:安装时提示 containerd.io 无法解析
  • 解决:确保添加了正确的 repo,且系统时间同步(NTP),否则 HTTPS 证书验证会失败。

3. cgroup v2 兼容性问题

  • 现象:Docker 启动失败,日志中出现 cgroup v2 not supported
  • 解决:
    • 检查 /proc/cmdline 是否包含 systemd.unified_cgroup_hierarchy=1
    • OpenEuler 22.03+ 默认启用 cgroup v2,需确保内核参数正确,或在 /etc/default/grub 中添加并执行 grub2-mkconfig -o /boot/grub2/grub.cfg

4. aarch64 架构支持

  • 现状:Docker 官方对 aarch64 的支持滞后于 x86_64。若使用鲲鹏服务器,建议:
    • 使用 OpenEuler 官方提供的 docker-ce 包(如有)
    • 或使用 podman 替代(OpenEuler 对 podman 支持极佳)
    • 或联系华为云获取定制化容器镜像

五、最佳实践建议

  1. 优先使用 OpenEuler 官方仓库
    如果 OpenEuler 官方源提供了 docker-ce 包,优先使用官方源,因其经过华为认证,兼容性更好。可通过以下命令查看:

    sudo dnf list available docker-ce
  2. 考虑使用 Podman 作为替代
    OpenEuler 深度集成 Podman,无需守护进程,更安全,且与 Docker CLI 完全兼容:

    sudo dnf install podman podman-docker
    alias docker=podman
  3. 定期更新内核与 Docker
    OpenEuler 强调长期支持(LTS),建议保持内核与 Docker 版本同步更新,避免安全漏洞。

  4. 禁用 SELinux(测试环境)
    若遇到权限问题,临时关闭 SELinux 快速定位:

    sudo setenforce 0

六、结论

在 OpenEuler 上安装 Docker 的步骤与 CentOS 高度相似,主要差异在于:

  • 包管理器:统一使用 dnf
  • GPG 验证:需手动导入密钥,更严格
  • 架构支持:aarch64 需特别注意
  • 安全策略:推荐配置 docker 用户组,禁用 root 直接运行

对于生产环境,若对容器化要求不高,强烈建议在 OpenEuler 上使用 Podman,其与系统整合度更高,无需额外维护 Docker 守护进程,更符合现代 Linux 容器最佳实践。

未经允许不得转载:CLOUD云枢 » 在欧拉和CentOS中安装Docker的步骤有哪些差异?