RHEL 7 安装 Docker 过程总结

基于执行的历史命令,以下是完整的 RHEL 7 系统安装 Docker 的过程总结。这个过程通过更换为 CentOS 7 的 YUM 源 ,巧妙地解决了 RHEL 7 的 $releasever 变量与阿里云 Docker 镜像路径不匹配的核心问题。

📋 安装步骤与命令解析

第 1 步:解决基础源问题

bash 复制代码
# 211 - 将阿里云的 CentOS 7 仓库配置下载为系统的基础源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

# 212 - 安装 yum-utils 工具包(包含 yum-config-manager 等)
sudo yum install -y yum-utils

# 213 - 挂载本地光盘(备用,但此安装未实际使用)
mount /dev/cdrom /mnt

关键点 :第 211 行命令是解决后续问题的核心前提 。通过将系统基础源替换为 CentOS 7 的阿里云镜像,确保了 $releasever 变量被识别为 7 而非 7Server

第 2 步:添加 Docker 仓库

bash 复制代码
# 214 - 添加阿里云 Docker CE 仓库(使用 centos 路径)
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

路径说明 :此命令添加的是 .../linux/centos/docker-ce.repo 而非 .../linux/rhel/docker-ce.repo,这与第一步的 CentOS 源保持一致。

第 3 步:尝试安装与问题排查

bash 复制代码
# 215 - 第一次安装尝试(预期会因 $releasever 问题失败)
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 216 - 针对性修复 Docker 仓库文件中的变量
sudo sed -i 's/\$releasever/7/g' /etc/yum.repos.d/docker-ce.repo

# 217 - 第二次安装尝试
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

此时可能仍存在其他仓库文件(如 docker-ce-stable.repo)包含 $releasever 变量。

第 4 步:全面修复与成功安装

bash 复制代码
# 218 - 清理 YUM 缓存
yum clean all

# 219 - 第三次安装尝试
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 220 - 查看当前目录文件
ll

# 221 - 批量修复所有 docker 相关的仓库文件
sudo sed -i 's/\$releasever/7/g' /etc/yum.repos.d/docker*.repo

# 222 - 第四次安装尝试
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 223 - 最彻底的修复:替换所有仓库文件中的 $releasever
sudo sed -i 's/\$releasever/7/g' /etc/yum.repos.d/*.repo

# 224 - 最终成功的安装
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

第 5 步:验证安装

bash 复制代码
# 225 - 查看 Docker 版本确认安装成功
docker --version

# 226 - 查看历史命令
history

第 6 步:配置国内镜像源

bash 复制代码
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://0b27f0a81a00f3560fbdc00ddd2f99e0.mirror.swr.myhuaweicloud.com",
    "https://ypzju6vq.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}
EOF


# 重启服务
systemctl daemon-reload
systemctl restart docker

🎯 关键技术要点

1. 问题本质

  • RHEL 7 的 $releasever 变量值为 7Server
  • 阿里云镜像库的路径结构期望 77Server 特定值
  • 两者不匹配导致 404 错误

2. 解决方案演变

  1. 初步尝试 :单独修改 docker-ce.repo 文件(第216行)
  2. 扩展修复 :批量修改 docker*.repo 文件(第221行)
  3. 彻底解决 :修改所有 *.repo 文件(第223行)

3. 最优实践命令

bash 复制代码
# 完整安装流程(已验证有效)
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's/\$releasever/7/g' /etc/yum.repos.d/*.repo
sudo yum clean all
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

⚡ 经验总结

  1. 源一致性是关键:使用 CentOS 7 源配套 CentOS 路径的 Docker 仓库,保持一致性
  2. 变量替换要彻底 :不仅仅是 Docker 仓库,所有仓库文件中的 $releasever 都可能需要替换
  3. 清理缓存很重要 :在修改仓库配置后执行 yum clean all 可避免缓存干扰
  4. 批量替换效率高sudo sed -i 's/\$releasever/7/g' /etc/yum.repos.d/*.repo 是最可靠的修复方式

这种方法避免了复杂的仓库配置调整,通过统一系统的 $releasever 识别方式,从根本上解决了 RHEL 7 使用阿里云 Docker 镜像的兼容性问题。

相关推荐
maosheng11463 小时前
RHCSA的第一次作业
linux·运维·服务器
旺仔.2914 小时前
Linux 信号详解
linux·运维·网络
Hoshino.415 小时前
基于Linux中的数据库操作——下载与安装(1)
linux·运维·数据库
Lxinccode5 小时前
docker(28) : 别名配置
docker·容器·eureka·docker别名
恒创科技HK6 小时前
通用型云服务器与计算型云服务器:您真正需要哪些配置?
运维·服务器
吴佳浩 Alben6 小时前
GPU 生产环境实践:硬件拓扑、显存管理与完整运维体系
运维·人工智能·pytorch·语言模型·transformer·vllm
播播资源7 小时前
CentOS系统 + 宝塔面板 部署 OpenClaw源码开发版完整教程
linux·运维·centos
学不完的7 小时前
Docker数据卷管理及优化
运维·docker·容器·eureka
lay_liu7 小时前
Linux安装redis
linux·运维·redis
曾经拒绝刘亦菲9 小时前
Clamav在麒麟V10离线安装指南
运维