2025年在已停止维护的 CentOS 7 上装 Docker:从「装不上」到「跑起来」的完整笔记
CentOS 7 已经官宣停更,官方源三天两头 404;国内服务器裸连 Docker Hub 又频频超时。
这篇笔记把我自己踩过的坑一次性写全,每一步都写清楚是干嘛的,复制粘贴就能用。
1. 先看看机器能不能跑
bash
cat /etc/redhat-release # 看系统版本
uname -r # 看内核,≥3.10 就行
getconf LONG_BIT # 确认 64 位
CentOS 7 默认内核就是 3.10,不用升级,直接下一步。
2. 把旧 repo 备份,防止改错回不去
bash
sudo mkdir -p /etc/yum.repos.d/backup
sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
目的:留条后路,哪天想用回官方源也能秒切。
3. 换国内基础源,先让 yum 能装包
bash
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
sudo yum clean all && sudo yum makecache fast
目的:CentOS 停更后默认镜像站失效,换成阿里云还能继续下载依赖。
4. 换国内 Docker CE 源,否则安装过程就卡死
bash
sudo wget -O /etc/yum.repos.d/docker-ce.repo \
http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' \
/etc/yum.repos.d/docker-ce.repo
目的:官方 download.docker.com
被墙,阿里云内网线路稳定。
5. 安装 Docker 全家桶
bash
sudo yum -y install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
目的:docker-ce
是社区版主包,containerd.io
是底层运行时,缺一不可。
6. 换国内镜像加速器,解决「拉镜像超时」
新建/覆盖配置文件:
bash
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"https://hub.rat.dev",
"https://dockerhub.icu"
]
}
EOF
重启生效:
bash
sudo systemctl daemon-reload
sudo systemctl restart docker
目的:把默认 registry-1.docker.io
转到国内节点,秒拉 hello-world。
7. 验证:跑官方 hello-world
bash
sudo docker run --rm hello-world
看到以下字样就 OK:
Hello from Docker!
This message shows that your installation appears to be working correctly.
首次运行会先拉镜像,以后本地有了就直接跑。
8. 常见问题速查表
报错现象 | 一句话解决 |
---|---|
TCP connection reset by peer | 没换国内 Docker 源,执行第 4 步 |
File contains no section headers | repo 文件里混进 404 页面,删掉重新下载 |
Client.Timeout exceeded | 没配镜像加速器,执行第 6 步 |
container-selinux 依赖失败 | 先 sudo yum install -y epel-release 再装 Docker |
9. 懒人一键脚本(整个复制跑)
bash
#!/bin/bash
set -e
echo "-- 1. 备份旧 repo"
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
echo "-- 2. 换国内基础源"
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
echo "-- 3. 换国内 Docker 源"
wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo
echo "-- 4. 安装 Docker"
yum clean all && yum makecache fast
yum -y install docker-ce docker-ce-cli containerd.io
echo "-- 5. 镜像加速器"
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"https://hub.rat.dev"
]
}
EOF
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
echo "-- 6. 验证"
docker version
docker run --rm hello-world
保存为 install_docker_centos7.sh
,chmod +x
后 bash
一下,5 分钟完事。
全文亲测,每一步都能复制粘贴跑通。
如果帮到你,点个收藏再走~