Skip to content

Docker Install 在 OpenEuler 环境

Docker 官方文档: https://docs.docker.com/install/linux/docker-ce/centos/

确认你的 CPU 微架构级别

shell
# 确认你的CPU具体支持的x86-64微架构级别
cat /proc/cpuinfo | grep flags | uniq

查看输出中是否包含 lm(长模式,64位的标志)但不包含较新的指令集,如 avx2(常与x86-64-v2关联)或 avx512(常与x86-64-v3/v4关联)。

选择兼容的 Docker 版本

旧的硬件设备的 CPU 可能只支持 x86-64-v1,不支持 x86-64-v2 和 x86-64-v3。而 docker 最新版本已经对 CPU 有要求了。

CPU x86-64-v1 的旧设备的 docker 软件源使用 centos 7 合适。

DNF 和 YUM 包管理器

DNF 是对 YUM 的改写,虽然您可能会看到 YUM 在旧系统上使用,但它已停止使用,取而代之的是 DNF。现在没有太多理由去再探索 YUM。

dnf 添加源 repo

bash
# dnf 添加源 repo(如果官方的无法访问(2025年11月可访问),可以切换为阿里源)
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

# 阿里源
dnf config-manager --add-repo=http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 查询 repo
[root@hecs-366183 ~]# dnf repolist -v

如果发现报错了, 报 404 找不到这个地址:https://download.docker.com/linux/centos/2.0/x86_64/stable/repodata/repomd.xml

问题原因

第三方 YUM 源仅适配 CentOS 发行版,OpenEuler、Alibaba Cloud Linux 2 等操作系统与 CentOS 操作系统的 $releasever 版本值不同,导致 dnf 解析后的地址无效,从而下载容器软件包失败。

dnf 安装 docker-ce 软件包时,首先会在系统中获取版本号,即$releasever 值,然后替换相应 YUM 源中 baseurl 地址对应的$releasever 变量,dnf 从替换后的 baseurl 地址中获取相关数据。

由于 CentOS 9 操作系统的 $releasever 值为 9,Alibaba Cloud Linux 2 操作系统的 $releasever 值为 2.0,因此解析后的 baseurl 地址并非预期地址,dnf 便无法从这个错误的地址中获取数据。

解决方案

方式一:sed 修正仓库中的系统版本变量

shell
# docker 低版本(CPU x86-64-v1 推荐 7)
sed -i 's+$releasever+7+' /etc/yum.repos.d/docker-ce.repo

# docker 低版本(CPU x86-64-v2 推荐 8)
sed -i 's+$releasever+8+' /etc/yum.repos.d/docker-ce.repo

# docker 高版本(CPU x86-64-v2, x86-64-v3 推荐 9)
sed -i 's+$releasever+9+' /etc/yum.repos.d/docker-ce.repo

# 查看
cat /etc/yum.repos.d/docker-ce.repo

或者

shell
# 方式二:手动修改
vi /etc/yum.repos.d/docker-ce.repo

按 i 键切换至编辑模式,找到 docker-ce.repo 文件中所有 enabled=1 值的源,将源中 baseurl 地址的$releasever 变量修改为 9,修改之后的内容如下所示(注意和注释掉的 baseurl 不同的地方)。

shell
[docker-ce-stable]
name=Docker CE Stable - $basearch
# baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable
baseurl=https://download.docker.com/linux/centos/9/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

修改完成后,按下 Esc 键后,输入:wq 并回车以保存并关闭配置文件,重新安装软件包即可。

shell
dnf makecache

# 列出所有可用的docker-ce软件包
dnf list docker-ce --showduplicates | sort -r

dnf install docker-ce -y

# (旧版本安装)添加 --nobest 参数。 意思是:筛选出最终符合要求的包来安装。避免因最佳版本匹配问题导致安装失败。
dnf install --nobest docker-ce -y

# (旧版本安装)安装指定版本(这个版本在 OpenEuler 旧版本可以安装。 CPU x86-64-v1)
dnf install docker-ce-18.06.3.ce-3.el7 -y

# 2025-11-01 官方文档安装(最新版本在 OpenEuler 旧版本安装有问题)
dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# 安装失败执行和 dnf remove docker-ce
dnf clean all

# 2. Start Docker
systemctl start docker

# 3. 开机自动启动
systemctl enable docker

systemctl restart docker

# 查看版本
docker --version
# 查看 buildx plugin 版本
docker buildx version

# 卸载:Uninstall Docker CE(旧版本)
dnf remove docker-ce -y

# 卸载:2025-11-01 官方文档
dnf remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine -y

配置镜像加速器

最新加速器参考文档: Docker Install 在 Debian 环境 ## 国内 Docker 镜像加速器状态监测