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 镜像的兼容性问题。

相关推荐
荣--19 小时前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森19 小时前
动手实战学 Docker — 从零到集群编排完全指南
运维
宋均浩20 小时前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
Avan_菜菜1 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
程序员老赵2 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua1112 天前
LM Studio Docker 部署——本地大模型一键启动
docker
SelectDB2 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
曲幽3 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
XIAOHEZIcode4 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220705 天前
如何搭建本地yum源(上)
运维