从 CentOS 迁移到欧拉系统(openEuler)后,虽然两者在底层架构和包管理上较为相似(均为基于 RPM 的 Linux 发行版),但由于系统内核、软件源、安全策略等方面的差异,Docker 的安装流程需要进行一些调整。以下是迁移后安装 Docker 所需注意的关键调整点和推荐步骤:
一、关键差异与注意事项
| 对比项 | CentOS | openEuler |
|---|---|---|
| 默认容器引擎 | Docker(旧版本)或 Podman | 推荐使用 iSulad(华为自研轻量级容器引擎) |
| 内核版本 | 较老(如 3.10+) | 较新(如 5.10+),支持更多容器特性 |
| 软件源 | EPEL、Docker 官方源 | 华为官方源、社区源 |
| 安全策略 | SELinux | 改为 SELinux + SecGear 等安全机制 |
| 默认不支持 Docker | 否 | 部分版本默认不包含 Docker,建议使用 iSulad 或手动安装 |
⚠️ 注意:openEuler 官方更推荐使用 iSulad + CRI-O + Kubernetes 架构,而非传统 Docker。
二、如果仍需安装 Docker(兼容性需求)
尽管不推荐,但若必须使用 Docker,可以按照以下步骤操作:
✅ 方法一:使用华为官方软件源安装 Docker(推荐)
- 配置华为镜像源(可选,提升下载速度)
sudo sed -e 's|^baseurl=https://repo.openeuler.org|baseurl=https://mirrors.huaweicloud.com/openeuler|g'
-i.bak /etc/yum.repos.d/openEuler.repo
- 安装依赖
sudo dnf install -y yum-utils device-mapper-persistent-data lvm2
- 添加 Docker CE 的第三方源(Docker 官方不再原生支持 openEuler)
由于 Docker 官方未提供 openEuler 的专属仓库,可尝试使用 CentOS Stream 或 RHEL 兼容源:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
⚠️ 注意:此方式存在兼容性风险,建议验证内核和库依赖。
- 安装 Docker Engine
sudo dnf install -y docker-ce docker-ce-cli containerd.io
- 启动并设置开机自启
sudo systemctl enable docker
sudo systemctl start docker
- 验证安装
sudo docker --version
sudo docker run hello-world
✅ 方法二:使用编译或二进制包安装(离线环境适用)
- 下载静态二进制包(从 Docker 官网):
wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz
tar xzvf docker-*.tgz
- 拷贝到系统路径:
sudo cp docker/* /usr/local/bin/
- 创建服务文件
/etc/systemd/system/docker.service:
[Unit]
Description=Docker Application Container Engine
After=network.target
[Service]
Type=notify
ExecStart=/usr/local/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
- 启动服务:
sudo systemctl daemon-reexec
sudo systemctl enable docker
sudo systemctl start docker
三、推荐方案:使用 iSulad(openEuler 原生容器引擎)
iSulad 是 openEuler 默认的轻量级容器运行时,兼容 OCI 标准,更适合国产化生态。
安装 iSulad:
sudo dnf install -y isulad cri-tools
启动服务:
sudo systemctl enable isulad
sudo systemctl start isulad
使用 crictl 测试:
sudo crictl --runtime-endpoint unix:///var/run/isulad.sock images
📌 提示:若配合 Kubernetes 使用,需配置 kubelet 的
--container-runtime=remote和--runtime-request-endpoint=unix:///var/run/isulad.sock
四、权限与用户组调整
无论使用 Docker 还是 iSulad,建议将用户加入容器组:
sudo usermod -aG docker $USER # Docker
sudo usermod -aG isulad $USER # iSulad
五、常见问题排查
| 问题 | 解决方案 |
|---|---|
Failed to start docker.service: Unit not found |
确保已正确安装 docker-ce 包 |
permission denied 拉取镜像 |
检查用户是否在 docker 或 isulad 组 |
kernel not supported |
升级内核或检查 cgroups/v2 支持 |
| 镜像拉取慢 | 配置国内镜像提速器(如阿里云、华为云) |
配置 Docker 提速器(/etc/docker/daemon.json):
{
"registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"]
}
然后重启:
sudo systemctl restart docker
六、总结:建议迁移策略
| 场景 | 推荐方案 |
|---|---|
| 新项目、国产化要求 | 使用 iSulad + Kubernetes |
| 兼容现有 Docker 脚本 | 安装 Docker(通过第三方源或二进制) |
| 生产稳定性优先 | 建议评估 iSulad 替代方案 |
| 开发测试环境 | 可临时使用 Docker 二进制方式 |
✅ 最终建议:
尽量利用 openEuler 的原生优势,迁移到 iSulad 容器生态,避免长期依赖非官方支持的 Docker 版本。若必须使用 Docker,请充分测试兼容性和安全性。
如需进一步帮助,可参考:
- openEuler 官网:https://www.openeuler.org
- iSulad 文档:https://gitee.com/openeuler/iSulad
云小栈