在企业环境中,由于网络限制或安全策略,Docker 离线镜像的部署成为常见需求,特别是在无法访问公网的情况下,如何为 CentOS 系统准备和部署 Docker 离线镜像,成为运维人员必须掌握的技能,本文将详细介绍 Docker 离线镜像在 CentOS 上的完整部署流程,包括镜像获取、传输、安装及常见问题解决。

Docker 离线镜像的获取方式
1 从公网下载并导出镜像
在有网络的环境中,可以通过 docker pull 命令下载所需的 Docker 镜像,然后使用 docker save 命令导出为 .tar 文件,下载并导出 Docker CE 最新版本的镜像:
docker pull docker:latest docker save -o docker-offline.tar docker:latest
导出的文件可以通过 scp 或 rsync 等工具传输到目标 CentOS 服务器。
2 使用第三方镜像仓库
一些平台(如阿里云、网易云)提供了镜像加速服务,可以下载特定版本的 Docker 镜像,还可以使用 docker-mirror 等工具构建本地镜像仓库,便于离线环境使用。
3 手动构建离线镜像
如果目标环境需要自定义镜像,可以通过编写 Dockerfile 在有网络的环境中构建,然后导出为离线镜像:
docker build -t my-custom-image:latest . docker save -o my-custom-image.tar my-custom-image:latest
CentOS 系统环境准备
在部署 Docker 离线镜像前,需确保 CentOS 系统满足以下要求:
1 系统版本兼容性
| CentOS 版本 | Docker CE 支持情况 | 推荐版本 |
|---|---|---|
| CentOS 7 | 支持 | 9 |
| CentOS 8 | 支持 | 4 |
| CentOS Stream 9 | 支持 | 最新 |
2 依赖包安装
确保系统已安装必要的依赖包:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3 创建本地 Yum 仓库(可选)
如果需要离线安装 Docker 依赖包,可提前下载相关 RPM 包并创建本地仓库:

sudo yum install -y createrepo sudo mkdir -p /opt/docker-repo sudo cp *.rpm /opt/docker-repo/ sudo createrepo /opt/docker-repo
Docker 离线镜像的安装与部署
1 导入 Docker 镜像
将导出的 .tar 文件传输到目标服务器后,使用 docker load 命令导入镜像:
docker load -i docker-offline.tar
导入后可通过 docker images 验证镜像是否成功加载。
2 离线安装 Docker CE
如果目标环境未安装 Docker,可通过以下步骤离线安装:
下载 Docker CE RPM 包
在有网络的环境中,使用yumdownloader下载 Docker CE 相关 RPM 包:sudo yumdownloader --destdir=/opt/docker-rpms docker-ce docker-ce-cli containerd.io
传输并安装 RPM 包
将下载的 RPM 包传输到目标服务器,执行安装:sudo rpm -ivh /opt/docker-rpms/*.rpm
启动并配置 Docker
sudo systemctl start docker sudo systemctl enable docker
3 配置镜像加速器(可选)
在离线环境中,可配置本地镜像加速器以提高拉取效率,编辑 /etc/docker/daemon.json 文件:

{
"registry-mirrors": ["http://local-registry:5000"]
} 重启 Docker 服务使配置生效:
sudo systemctl restart docker
常见问题与解决方案
1 镜像导入失败
问题:执行 docker load 时提示 invalid tar header 或类似错误。
原因:镜像文件损坏或格式不正确。
解决:重新导出镜像文件,确保传输过程未损坏文件。
2 Docker 服务无法启动
问题:systemctl start docker 失败,提示依赖包缺失。
原因:未安装必要的依赖包(如 container-selinux)。
解决:手动安装缺失的依赖包:
sudo yum install -y https://rpmfind.net/linux/centos/8-stream/AppStream/x86_64/os/Packages/container-selinux-2.134.1-1.module_el8.5.0+857+8ad07c5b.x86_64.rpm
3 离线镜像无法运行
问题:容器启动时报错 image not found。
原因:镜像未正确导入或 Docker 未识别镜像标签。
解决:检查镜像列表,确保镜像名称和标签正确:
docker images | grep <镜像名称>
相关问答 FAQs
Q1: 如何验证 Docker 离线镜像的完整性?
A: 可以通过以下步骤验证镜像完整性:
- 导入镜像后,运行
docker inspect <镜像名>检查镜像元数据是否完整。 - 尝试启动一个临时容器测试镜像功能:
docker run --rm -it <镜像名> /bin/bash
Q2: 离线环境中如何更新 Docker 镜像?
A: 在离线环境中更新镜像需要以下步骤:
- 在有网络的环境中构建新版本的镜像并导出为
.tar文件。 - 将新镜像文件传输到目标服务器,覆盖旧镜像文件。
- 使用
docker load重新导入镜像,并删除旧版本镜像:docker rmi <旧镜像名>:<旧标签>
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复