问题背景
在国内服务器上安装 Docker CE 时,许多运维人员会选择使用阿里云提供的镜像源以加快下载速度。然而,在某些 RHEL 系发行版上(如 Amazon Linux 2023、AlibabaCloud Linux 3 等),按照官方文档操作时会遇到 404 错误,导致安装失败。
问题复现
按照阿里云官方文档(https://developer.aliyun.com/mirror/docker-ce)的步骤操作:
sudo dnf install -y dnf-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
```
执行到最后一步时,系统报错:
```
Status code: 404 for https://mirrors.aliyun.com/docker-ce/linux/centos/3/x86_64/stable/repodata/repomd.xml
问题分析
仔细观察错误信息中的 URL 路径 centos/3/x86_64,可以发现中间的数字 3 异常。这个数字来自于 YUM 配置文件中的 $releasever 变量。
问题的根源在于:某些新版本的 RHEL 系发行版(如 AlibabaCloud Linux 3)的 $releasever 变量值与实际可用的 Docker CE 仓库版本不匹配。阿里云镜像站实际上没有提供 centos/3 这个路径,而是提供了 centos/7、centos/8 等版本。
解决方案
步骤 1: 编辑 Docker CE 仓库配置文件
使用文本编辑器打开配置文件:
sudo vi /etc/yum.repos.d/docker-ce.repo
步骤 2: 修改 baseurl 配置
找到 [docker-ce-stable] 段落,将:
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
修改为(将 $releasever 替换为固定版本号 8):
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
步骤 3: 重新执行安装命令
sudo yum install docker-ce docker-ce-cli containerd.io
此时应该可以正常安装了。
总结
这个问题的本质是系统的 $releasever 变量检测不准确,导致指向了不存在的仓库路径。通过手动将版本号固定为 8(CentOS 8 的仓库与大多数 RHEL 8 系发行版兼容),即可成功安装 Docker CE。
适用范围
本解决方案适用于以下系统:
- Amazon Linux 2023
- AlibabaCloud Linux 3
- 其他 RHEL 8/9 系发行版出现类似问题时
注意事项
- 如果使用 CentOS 7,可以将版本号改为
7 - 修改后建议执行
sudo yum clean all清除缓存 - 安装完成后记得启动 Docker 服务:
sudo systemctl start docker
文章评论