Appearance
CentOS 7 EOL 背景下 Docker 二进制安装指南

背景说明
CentOS 7 已于 2024 年 6 月 30 日 正式停止维护(End of Life,EOL)。这意味着:
- 官方 yum 源(
mirror.centos.org)已不可用 - EPEL 等第三方源陆续停止对 CentOS 7 的支持
- 通过
yum安装 Docker 会面临依赖包无法下载的问题
在此背景下,二进制部署成为在 CentOS 7 上安装 Docker 最可靠、最直接的方式。
方案优势
| 对比项 | yum 安装 | 二进制安装 |
|---|---|---|
| 依赖处理 | 需解决 container-selinux 等依赖 | 完全无依赖,直接运行 |
| 源可用性 | CentOS 7 EOL 后源失效 | 无影响,直接下载 tar 包 |
| 安装速度 | 依赖网络和源速度 | 快速,5 分钟内完成 |
| 适用场景 | 有稳定源的环境 | 老旧系统、离线环境、EOL 系统 |
| 升级方式 | yum update 自动升级 | 手动下载新版本替换 |
前置条件
- 操作系统:CentOS 7(内核版本 ≥ 3.10)
- 网络环境:能够访问 Docker 官方下载站或阿里云镜像站
- 用户权限:root 或具有 sudo 权限
检查内核版本:
bash
uname -r
# 示例输出:5.14.21-20230616.el7.x86_64安装步骤
第一步:下载 Docker 二进制包
bash
# 进入临时目录
cd /tmp
# 安装 wget(如已安装可跳过)
sudo yum install -y wget
# 从官方下载(推荐)
sudo wget https://download.docker.com/linux/static/stable/x86_64/docker-26.1.4.tgz
# 或从阿里云镜像下载(国内用户推荐)
# sudo wget https://mirrors.aliyun.com/docker-ce/linux/static/stable/x86_64/docker-26.1.4.tgz版本说明:
26.1.4是经过验证的稳定版本。如需其他版本,可访问:
第二步:解压并安装二进制文件
bash
# 解压压缩包
sudo tar -xzvf docker-26.1.4.tgz
# 将二进制文件复制到系统 PATH
sudo cp docker/* /usr/bin/此时 Docker 核心命令(docker、dockerd 等)已可用,但还需要配置为系统服务以便开机自启。
第三步:创建 Docker 用户组(可选)
bash
# 创建 docker 用户组
sudo groupadd docker
# 将当前用户加入 docker 组(避免每次使用 sudo)
sudo usermod -aG docker $USER第四步:配置 systemd 服务
创建 Docker 的 systemd 服务文件,使其能够被 systemctl 管理:
bash
sudo cat > /etc/systemd/system/docker.service << 'EOF'
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF第五步:启动 Docker 服务
bash
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 启动 Docker
sudo systemctl start docker
# 设置开机自启
sudo systemctl enable docker
# 检查服务状态
sudo systemctl status docker第六步:验证安装
bash
# 查看 Docker 版本信息
sudo docker version
# 运行 hello-world 容器验证
sudo docker run hello-world看到以下输出即表示安装成功:
Hello from Docker!
This message shows that your installation appears to be working correctly.
...常见问题排查
1. 非 root 用户无法执行 docker 命令
bash
# 重新登录或执行以下命令
newgrp docker2. 启动失败,提示 "devicemapper" 相关错误
CentOS 7 内核默认支持 overlay2 存储驱动,无需额外配置。检查存储驱动:
bash
sudo docker info | grep "Storage Driver"
# 应输出:Storage Driver: overlay23. 防火墙导致容器无法访问网络
bash
# 临时关闭防火墙(测试用)
sudo systemctl stop firewalld
# 或开放 Docker 所需端口
sudo firewall-cmd --permanent --add-port=2375/tcp
sudo firewall-cmd --reload4. 下载链接失效
如果版本更新导致链接 404,可访问下载目录获取最新版本号:
bash
# 官方下载目录
curl -s https://download.docker.com/linux/static/stable/x86_64/ | grep -o 'docker-[0-9.]*\.tgz' | sort -V | tail -1
# 阿里云镜像目录
curl -s https://mirrors.aliyun.com/docker-ce/linux/static/stable/x86_64/ | grep -o 'docker-[0-9.]*\.tgz' | sort -V | tail -1后续操作建议
配置 Docker 守护进程代理
重要:Docker 守护进程(dockerd)不读取 shell 环境变量,需要单独配置。
bash
# 1. 创建 Docker 服务配置目录
sudo mkdir -p /etc/systemd/system/docker.service.d
# 2. 写入代理配置
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<'EOF'
[Service]
Environment="HTTP_PROXY=http://192.168.0.237:7890"
Environment="HTTPS_PROXY=http://192.168.0.237:7890"
Environment="NO_PROXY=localhost,127.0.0.1,.local,.aliyuncs.com"
EOF
# 3. 重新加载并重启 Docker(后续安装后需执行)
# sudo systemctl daemon-reload
# sudo systemctl restart docker⚠️ 避坑提醒:NO_PROXY 中不要包含 .docker.io,否则 Docker Hub 流量不会走代理。
配置 Docker 镜像加速器
创建或修改 /etc/docker/daemon.json:
bash
sudo mkdir -p /etc/docker
sudo cat > /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
EOF
# 重启 Docker 使配置生效
sudo systemctl restart docker升级 Docker 版本
需要升级时,下载新版本包,覆盖 /usr/bin/ 下的二进制文件,然后重启服务:
bash
# 下载新版本
wget https://download.docker.com/linux/static/stable/x86_64/docker-新版本号.tgz
tar -xzvf docker-新版本号.tgz
sudo cp docker/* /usr/bin/
# 重启服务
sudo systemctl restart docker总结
在 CentOS 7 EOL 的大背景下,二进制安装 Docker 具有以下显著优势:
- 绕过失效源:不依赖任何 yum 仓库,直接下载官方预编译包
- 无依赖冲突:无需处理
container-selinux、slirp4netns等依赖包 - 部署快速:5 分钟内即可完成从下载到验证的全流程
- 可控性强:可精确指定版本,方便离线部署和版本管理
虽然 CentOS 7 已停止维护,但通过二进制方式仍可在其上稳定运行 Docker,为遗留系统的容器化改造提供可行路径。
参考资料
建议:生产环境请尽快规划迁移至 Rocky Linux / AlmaLinux 等活跃维护的发行版。
