Docker离线部署无网络环境安装
什么时候需要离线安装Docker?
办公内网、金融机房或生产环境通常不允许服务器直接连接外网。
此时如果要用Docker管理容器,就必须提前准备好安装包,通过U盘或跳板机传输到目标机器。
本文以 CentOS 7 为例,操作同样适用于 Red Hat 系发行版,步骤可重复执行。
第一步:在能上网的电脑上准备离线包
你需要一台有网络的电脑(可以是你的笔记本),先安装Docker然后导出所有依赖的rpm包。
注意Docker版本和操作系统架构必须和目标服务器一致。
# 安装yum-utils(提供yumdownloader命令)
sudo yum install -y yum-utils createrepo
# 创建临时目录存放rpm包
mkdir docker-offline && cd docker-offline
# 下载docker-ce及其依赖(不安装,只下载)
yumdownloader --resolve docker-ce docker-ce-cli containerd.io
下载完成后,目录里会多出几十个.rpm文件。
把它们打包成一个压缩包:
tar czf docker-offline-pkg.tar.gz *.rpm
特别注意:如果目标服务器是CentOS 7,请不要用较新的Docker版本,推荐使用 20.10.x,兼容性最稳定。
第二步:将离线包传输到无网络服务器
把生成的docker-offline-pkg.tar.gz通过U盘、网络共享或内部文件传输工具拷贝到目标服务器。
假设存放在/root/目录下。
# 目标服务器上解压
tar xzf /root/docker-offline-pkg.tar.gz -C /root/docker-offline
第三步:离线安装Docker
进入存放rpm的目录,使用rpm命令将所有包安装到系统。
注意安装顺序:先装containerd.io,再装docker-ce-cli,最后装docker-ce。
但最简单的方式是直接用rpm -ivh一条命令安装所有:
cd /root/docker-offline
sudo rpm -ivh *.rpm --nodeps 2>/dev/null || sudo rpm -ivh *.rpm
--nodeps会跳过依赖检查,因为所有依赖已经包含在目录中。
如果出现重复包或版本冲突,可以使用rpm -Uvh *.rpm升级安装。
安装完成后,启动Docker服务并设置开机自启:
sudo systemctl start docker
sudo systemctl enable docker
第四步:验证Docker能否正常工作
运行官方测试容器,确保能拉取镜像(如果无网络,这里会失败,但可以验证引擎本身):
sudo docker version
sudo docker info
如果能看到客户端和服务端版本号,说明Docker已正确安装。
由于无网络,我们无法直接从仓库拉取镜像,所以需要提前准备好私有镜像或从有网络的机器导出镜像包。
避坑指南与高频问题
Q1:安装时提示缺少依赖 libcgroup? CentOS 7 默认没有该包。
解决方法:从有网络的机器上执行 yumdownloader --resolve libcgroup 将依赖一并下载,加入离线包文件夹后重新安装。
Q2:docker-ce 版本和内核不匹配? 使用 uname -r 查看内核版本,建议搭配 3.10 以上内核。
如果内核太旧(如 2.6),需要先升级内核,也可以考虑使用旧版 Docker 18.09。
Q3:
如何离线加载已有镜像? 在有网络的电脑上执行 docker save -o myimage.tar myimage:,
tag
将 tar 文件传输到目标服务器,
然后执行 docker load -i myimage.tar。
Q4:启动 docker 后报错 iptables failed? 关闭系统防火墙或添加 Docker 规则:systemctl stop firewalld && systemctl disable firewalld。
生产环境请按安全策略放行。
Q5:
rpm 安装顺序混乱导致失败? 建议先用 rpm -qpl *.rpm | grep -E "(containerd|cli|ce)" 确定版本顺序,
手动逐个安装。
最后的小建议
如果你正在处理 Docker离线部署无网络环境安装,建议先在自己笔记本上完整走一遍流程,确认所有依赖包齐全,然后按本文步骤在目标服务器上还原。
遇到问题优先检查包版本和内核兼容性。
离线环境虽然限制多,但只要准备充分,一样能稳定运行 Docker 服务。