centos7 离线安装 docker

48 阅读4分钟

你需要在 CentOS 7 系统上进行 Docker 的离线安装,核心思路是先在有网络的同版本 CentOS 7 上下载所有相关安装包和依赖,再拷贝到离线机器上进行本地安装,下面我将分步详细讲解完整流程,确保你能顺利完成。

一、前期准备(有网络的 CentOS 7 机器)

这一步的目标是下载 Docker 及所有依赖包,避免离线机器出现依赖缺失问题。

1. 配置 yum 源(确保下载顺利)

优先配置阿里云 yum 源(更稳定、下载更快),如果已有可用 yum 源可跳过。

bash

运行

# 1. 备份原有的 yum 源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

# 2. 下载阿里云 CentOS 7 yum 源配置文件
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

# 3. 下载 Docker 阿里云 yum 源(必须,否则无法获取 Docker 安装包)
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 4. 清理并更新 yum 缓存
yum clean all
yum makecache fast

2. 安装 yum-utils(用于下载离线包)

bash

运行

yum install -y yum-utils

3. 创建离线包存放目录

bash

运行

# 创建目录,用于存放所有下载的 rpm 包
mkdir -p /docker-offline-packages
cd /docker-offline-packages

4. 下载 Docker 及所有依赖包

使用 yumdownloader 命令下载 Docker (选择稳定版 docker-ce)及其所有依赖,--resolve 参数会自动下载相关依赖。

bash

运行

# 下载 Docker 核心包(包含 docker-ce、docker-ce-cli、containerd.io 等)
yumdownloader --resolve --destdir=/docker-offline-packages docker-ce

说明:下载过程中会自动拉取所有依赖(如 container-selinuxlibseccomp 等),等待下载完成即可,目录下会出现多个 .rpm 文件。

5. 打包离线包(方便拷贝)

为了便于传输,将所有 rpm 包打包成压缩文件:

bash

运行

tar -zcvf docker-ce-centos7-offline.tar.gz /docker-offline-packages

二、离线机器操作(无网络的 CentOS 7 机器)

这一步将拷贝打包好的离线包,进行本地安装并配置 Docker。

1. 拷贝离线包到离线机器

通过 U 盘、移动硬盘等存储设备,将 docker-ce-centos7-offline.tar.gz 拷贝到离线机器的任意目录(例如 /root/ 目录)。

2. 解压离线包

bash

运行

# 进入拷贝目录
cd /root/

# 解压压缩包
tar -zxvf docker-ce-centos7-offline.tar.gz

# 进入解压后的 rpm 包目录
cd /docker-offline-packages

3. 本地安装 Docker 及依赖

使用 yum localinstall 进行本地安装(该命令会自动处理本地包之间的依赖关系,比 rpm -ivh 更稳妥):

bash

运行

yum localinstall -y *.rpm

说明:安装过程中会提示 Is this ok [y/d/N],输入 y 并回车即可,等待安装完成。

若一直提示错误终极解决方案(本次必成,直接绕过无效依赖)

在有网环境,下载核心包(containerd.io、container-selinux、docker-ce、docker-ce-cli)

#彻底卸载docker
yum remove -y docker \
docker-buildx-plugin \
container-selinux \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
docker-ce \
docker-ce-cli \
containerd.io

#下载核心包
yumdownloader --resolve docker-ce-24.0.9-1.el7

    命令执行说明:此命令会自动下载以下4个包, 其中docker-ce-rootless-extras我们不需要手动删除即可
    - (1/4): docker-ce-24.0.9-1.el7.x86_64.rpm                                                 
    - (2/4): docker-ce-cli-26.1.4-1.el7.x86_64.rpm                                             
    - (3/4): containerd.io-1.6.33-3.1.el7.x86_64.rpm                                           
    - (4/4): docker-ce-rootless-extras-26.1.4-1.el7.x86_64.rpm 


# 单独下载container-selinux
yumdownloader --resolve container-selinux

确保当前目录只有 4 个 Docker 核心包,执行以下命令直接安装:

# -i:安装新包;-v:显示详细过程;-h:显示进度条;--nodeps:跳过依赖检查
rpm -ivh --nodeps *.rpm


   命令执行说明:
-   这个命令会忽略`docker-ce`对`docker-ce-rootless-extras`的依赖要求,直接安装所有核心包。
-   仅跳过这一个非必需依赖,4 个核心包之间的依赖是完整的(不会影响 Docker 功能),因此安装后 Docker 可以正常运行。
-   无需担心其他问题,因为我们舍弃的是不常用的 rootless 功能,对基础使用毫无影响。

安装完成后,修复可能的 yum 依赖缓存(可选,避免后续 yum 操作告警):

yum clean all && yum makecache fast

4. 验证 Docker 安装是否成功

bash

运行

# 查看 Docker 版本
docker --version
docker-compose --version(若下载了 compose 包)

# 启动 Docker 服务
systemctl start docker

# 设置 Docker 开机自启(推荐)
systemctl enable docker

如果能正常显示 Docker 版本,且 systemctl start docker 无报错,说明安装成功。

5. (可选)配置 Docker 镜像加速(离线环境无需,但后续联网可使用)

如果离线机器后续可能联网使用 Docker,可配置国内镜像加速,提升镜像拉取速度:

bash

运行

# 创建 Docker 配置目录
mkdir -p /etc/docker

# 编辑 daemon.json 配置文件
vi /etc/docker/daemon.json

在文件中添加以下内容(阿里云镜像加速,需自行替换为个人专属加速地址,离线环境可跳过此步骤):

json

{
  "registry-mirrors": ["https://你的专属加速地址.mirror.aliyuncs.com"]
}

保存并退出后,重启 Docker 使配置生效:

bash

运行

# 重新加载配置
systemctl daemon-reload

# 重启 Docker
systemctl restart docker