重要提示:CentOS 7 已于 2024 年 6 月 30 日结束维护。 本文只解决现有 CentOS 7 服务器继续运行 Docker 时的兼容问题,不建议作为新项目的长期生产方案。新服务器优先选择 Rocky Linux、AlmaLinux、CentOS Stream 或其他仍受维护的发行版。

CentOS 7 停服后,最常见的两个问题是:
yum访问mirrorlist.centos.org失败,提示Cannot find a valid baseurl;Docker Hub 拉取镜像超时,
docker compose up -d卡在registry-1.docker.io。
下面按“修复系统软件源 → 安装 Docker → 配置镜像加速 → 验证”的顺序处理。
0. 准备工作
先确认系统版本,并确保当前账号可以使用 sudo:
cat /etc/os-release
uname -r如果机器上已有生产服务,先做快照或备份。下面会修改 YUM 仓库文件和 Docker daemon 配置。
1. 把 CentOS 7 软件源切到国内归档镜像
CentOS 7 的常规镜像列表已经失效,因此先备份原仓库文件,再关闭 mirrorlist 并指向 7.9.2009 归档路径。
sudo cp -a /etc/yum.repos.d/CentOS-Base.repo \
/etc/yum.repos.d/CentOS-Base.repo.bak
sudo sed -i \
-e 's|^mirrorlist=|#mirrorlist=|' \
-e 's|^#baseurl=http://mirror.centos.org/centos/\$releasever/|baseurl=https://mirrors.cloud.tencent.com/centos/7.9.2009/|' \
/etc/yum.repos.d/CentOS-Base.repo
sudo yum clean all
sudo yum makecache
sudo yum repolist最后一条命令能列出 base、updates、extras 等仓库,就说明 YUM 已恢复可用。

如果服务器不在腾讯云,或该镜像访问不稳定,请改用所在云厂商提供的 CentOS 7.9.2009 归档镜像。不要再依赖已经失效的
mirrorlist.centos.org。
2. 配置 Docker CE 国内软件源并安装
先安装仓库管理工具,再添加 Docker CE 的国内镜像仓库:
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo \
https://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo
sudo yum clean all
sudo yum makecache安装 Docker Engine、Buildx 和 Docker Compose 插件:
sudo yum install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin启动 Docker,并设置为开机自启:
sudo systemctl enable --now docker
sudo docker version
sudo docker compose version看到 Client 和 Server 版本信息,以及 Docker Compose version,说明安装完成。
3. 配置 Docker Hub 镜像加速
Docker 能装好,不代表拉取镜像一定顺畅。若直接拉取 Docker Hub 经常超时,可为 daemon 配置镜像加速器。
下例的
mirror.ccs.tencentyun.com是腾讯云内网加速地址,适用于腾讯云实例。其他云厂商请使用各自账号提供的专属加速地址或私有镜像仓库。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker确认配置已被 Docker 读取:
sudo docker info | sed -n '/Registry Mirrors:/,/Live Restore Enabled:/p'也可以直接拉一个轻量镜像验证网络:
sudo docker pull hello-world
sudo docker run --rm hello-world4. 常见问题
YUM 仍提示无法找到 baseurl
确认仓库文件中已经禁用了 mirrorlist=,并且 baseurl= 指向 7.9.2009 的归档路径:
grep -E '^(mirrorlist|baseurl)=' /etc/yum.repos.d/CentOS-Base.repo
sudo yum clean all
sudo rm -rf /var/cache/yum
sudo yum makecache拉取镜像仍然连接超时
先检查 Docker 是否真的加载了镜像加速配置:
sudo docker info | grep -A 5 'Registry Mirrors'
sudo cat /etc/docker/daemon.json
sudo systemctl status docker --no-pager如果仍然失败,不要反复换来路不明的公共镜像站。优先使用云厂商提供的专属加速器,或者把常用镜像同步到自己的私有仓库。
5. 小结
在 CentOS 7 上安装 Docker 的关键不是一条安装命令,而是先接受它已经进入归档状态:
YUM 报错时,先修复归档软件源;
Docker 安装时,使用可访问的软件仓库;
镜像拉取超时时,按云厂商环境配置受信任的加速器;
能迁移时,尽快迁移到仍有安全更新的系统。
参考资料: