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

相关推荐
程序员_大白2 小时前
区块链部署与运维,零基础入门到精通,收藏这篇就够了
运维·c语言·开发语言·区块链
web小白成长日记2 小时前
Node.js 编程实战:部署 Node.js 应用 —— Docker 容器化部署
docker·容器·node.js
德迅云安全—珍珍2 小时前
2核2G的云服务器可以架设游戏吗?
运维·服务器·游戏
柠檬汁Dev2 小时前
已有 K8s 集群如何加装 Sealos 桌面
云原生·容器·kubernetes
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.3 小时前
HAProxy状态页:运维监控实战指南
运维
陈聪.3 小时前
HRCE实验
运维
Miracle&4 小时前
在Linux VirtualBox中安装系统失败
linux·运维·服务器
ShoreKiten4 小时前
ctfshow-web316
运维·服务器·前端
网硕互联的小客服4 小时前
WIN系统和liunx系统如何构建自动化安全运维(DevSecOps)流程?
运维·自动化