Docker 是一个开源的容器化平台,可以让你轻松地打包、分发和运行应用程序。但 CentOS 7 的默认软件源中并不包含 Docker CE,而且由于网络环境和系统兼容性问题,直接安装容易遇到各种坑。本文将带你一步步在 CentOS 7 上安装 Docker CE,并配置国内镜像加速器,让镜像拉取不再卡顿。
一、安装前的准备
1.1 确认系统环境
- 操作系统:CentOS 7(64 位)
- 内核版本:建议 3.10 或更高(CentOS 7 默认即满足)
- 权限要求 :具备 root 权限,或可以使用
sudo - 网络要求:服务器能够访问互联网,尤其是 HTTPS(443 端口)
检查内核版本,运行:
bash
uname -r
正常应输出类似 3.10.0-xxx.el7.x86_64,说明内核符合 Docker 运行要求。
1.2 更换 Yum 源为阿里云源(强烈推荐)
CentOS 7 的官方 yum 源已停止维护,且默认镜像站在国内访问速度很慢,经常导致安装失败。因此,在开始安装之前,我们先将 yum 源替换为阿里云提供的稳定镜像源。
① 备份原有配置文件
bash
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
这一步不是必须,但建议保留原始文件,以便将来需要时可以恢复。
② 下载阿里云 CentOS 7 源
bash
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

③ 清理并重建缓存
bash
sudo yum clean all
sudo yum makecache


执行完这些操作后,yum 就会从阿里云镜像拉取元数据和软件包,后续安装速度会明显提升。
二、卸载旧版本 Docker(如有)
如果系统中曾经安装过旧版 Docker(如 docker、docker-engine),必须先卸载干净,否则文件冲突会导致安装失败。
bash
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

如果没有安装过 Docker,跳过此步即可。
三、安装 Docker CE 依赖包
Docker 需要一些基础工具来管理软件源和存储驱动,安装这些依赖是后续操作的前提。
bash
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

yum-utils提供了yum-config-manager工具,用来管理 yum 源;device-mapper-persistent-data和lvm2是 Docker 的存储驱动所必需。
四、添加阿里云 Docker CE 软件源
Docker 官方为 CentOS 提供了官方的 yum 源,但直接使用在国内拉取很慢。我们可以换成阿里云提供的镜像源,快速稳定。
bash
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

此命令会在 /etc/yum.repos.d/ 下创建 docker-ce.repo 文件,之后安装 Docker 时会自动从阿里云镜像获取安装包。
五、查看可安装的 Docker CE 版本
CentOS 7 与最新版 Docker CE(如 26.x)可能存在兼容性问题,安装前最好确认一下仓库中有哪些版本,然后选择一个稳定版本安装。
bash
yum list docker-ce --showduplicates | sort -r
你会看到类似这样的列表:
docker-ce.x86_64 3:26.1.4-1.el7 docker-ce-stable
docker-ce.x86_64 3:24.0.7-1.el7 docker-ce-stable
docker-ce.x86_64 20.10.9-3.el7 docker-ce-stable
...

我们推荐安装 24.0.7 或 20.10.9,它们与 CentOS 7 兼容性最好。
六、安装指定版本的 Docker CE
注意 :不要直接运行
yum install docker-ce,因为它会默认安装最新版(可能是 26.x),很可能导致启动失败。务必明确指定版本号!
选择以下任一命令执行:
选项 1:安装 Docker 24.0.7(较新且稳定)
bash
sudo yum install -y docker-ce-24.0.7-1.el7 docker-ce-cli-24.0.7-1.el7 containerd.io
选项 2:安装 Docker 20.10.9(经典稳定版,兼容性极佳)
bash
sudo yum install -y docker-ce-20.10.9-3.el7 docker-ce-cli-20.10.9-3.el7 containerd.io
这些命令会同时安装 docker-ce(引擎)、docker-ce-cli(命令行工具)和 containerd.io(容器运行时),三者缺一不可。


七、启动 Docker 并设置开机自启
安装完成后,启动 Docker 服务,并让其随系统启动自动运行。
bash
# 启动 Docker 服务
sudo systemctl start docker
# 设置开机自动启动
sudo systemctl enable docker
# 查看 Docker 运行状态
sudo systemctl status docker
如果输出中显示 active (running),说明 Docker 已成功启动。

八、配置 Docker 国内镜像加速器(解决拉取超时)
8.1 为什么要配置镜像加速?
默认情况下,Docker 会从 Docker Hub(https://registry-1.docker.io)拉取镜像,但国内直接访问速度很慢,甚至频繁超时。镜像加速器是国内云服务商提供的缓存服务,可以让我们从国内的节点下载镜像,速度大幅提升。
8.2 修改 Docker 配置文件
创建或修改 Docker 的守护进程配置文件 /etc/docker/daemon.json,添加多个可用的镜像加速地址。我们这里提供一个比较全的列表,Docker 会自动轮询,即使部分地址失效也能保证拉取成功。
bash
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io/",
"https://dockerproxy.com/",
"https://docker.1panelproxy.com",
"https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://your_preferred_mirror",
"https://dockerhub.icu",
"https://dockerregistry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivrf.yi",
"https://docker.jsdelivrf.yi",
"https://dockertest.jsdelivrf.yi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
EOF
这个列表中很多都是国内主流镜像站,即使其中几个临时失效,Docker 也会自动尝试下一个,基本能保证镜像可以顺利拉取。
8.3 重启 Docker 使配置生效
bash
sudo systemctl daemon-reload
sudo systemctl restart docker

8.4 验证镜像加速是否生效
执行以下命令查看 Docker 当前配置:
bash
docker info
在输出的末尾,你应该能看到类似这样的 Registry Mirrors 列表:
Registry Mirrors:
https://docker.m.daocloud.io/
https://dockerproxy.com/
https://docker.1panelproxy.com/
...


如果看到你配置的地址,说明镜像加速已经生效。
九、测试拉取镜像
最后,我们拉取一个极小的 hello-world 镜像来验证一切是否正常:
bash
sudo docker pull hello-world
首次拉取可能需要几分钟(取决于你的网络),但配置了加速器后一般不会超时。耐心等待,下载速度应该比之前快得多。
你可能会在这里一直卡住好几分钟,但是不要着急,我也在这里停留了两三分钟。但是不要担心,开始下载的时候速度还是不慢的,即使是800MB的mysql开始下载也就几分钟就下好了。


如果镜像成功拉取,恭喜你,Docker 已经完整安装并配置完毕!