Skip to content

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

vCenter Server 8.0 安装部署示意图

背景说明

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 核心命令(dockerdockerd 等)已可用,但还需要配置为系统服务以便开机自启。

第三步:创建 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 docker

2. 启动失败,提示 "devicemapper" 相关错误

CentOS 7 内核默认支持 overlay2 存储驱动,无需额外配置。检查存储驱动:

bash
sudo docker info | grep "Storage Driver"
# 应输出:Storage Driver: overlay2

3. 防火墙导致容器无法访问网络

bash
# 临时关闭防火墙(测试用)
sudo systemctl stop firewalld

# 或开放 Docker 所需端口
sudo firewall-cmd --permanent --add-port=2375/tcp
sudo firewall-cmd --reload

4. 下载链接失效

如果版本更新导致链接 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 具有以下显著优势:

  1. 绕过失效源:不依赖任何 yum 仓库,直接下载官方预编译包
  2. 无依赖冲突:无需处理 container-selinuxslirp4netns 等依赖包
  3. 部署快速:5 分钟内即可完成从下载到验证的全流程
  4. 可控性强:可精确指定版本,方便离线部署和版本管理

虽然 CentOS 7 已停止维护,但通过二进制方式仍可在其上稳定运行 Docker,为遗留系统的容器化改造提供可行路径。

参考资料


建议:生产环境请尽快规划迁移至 Rocky Linux / AlmaLinux 等活跃维护的发行版。

最后更新2026/08/19 11:29
如果你觉得这篇文章有帮助,或者想聊聊技术、工作,欢迎通过下面方式联系我:
contact fishfinal