Docker离线部署无网络:无网络环境Docker离

什么时候需要 Docker 离线部署无网络?


企业内网、政务云、金融机房等环境经常禁止服务器访问公网。

这时候你要安装 Docker 并运行容器,必须走离线方式——提前在一台有网的机器上准备好所有安装包和镜像,再搬到目标机器上。

本文围绕 Docker离线部署无网络 这个场景,从零开始讲清楚每一步,保证你跟着做就能跑起来。


准备阶段:两台机器都要做什么


你需要两台服务器:



  • 有网机器(下载机):用来下载 Docker 安装包、镜像以及编译时可能需要的依赖(比如 containerd、runc)。

  • 无网机器(目标机):最终安装和运行 Docker 的离线服务器。


在下载机上,先确认你的目标机的操作系统版本和架构(比如 CentOS 7 x86_64 或 Ubuntu 20.04 amd64)。

通过 cat /etc/os-release 或者 uname -m 就能查到。

版本不同,依赖包的下载路径也不同,一定要对号入座。


核心步骤一:下载 Docker 安装包和所有依赖


1. 在有网机器上下载 RPM/DEB 包


以 CentOS 7 为例:


# 创建一个临时目录
mkdir ~/docker-offline && cd ~/docker-offline

用 yumdownloader 下载 Docker 及其依赖(需要先安装 yum-utils)

yum install -y yum-utils
repoquery --requires --resolve docker-ce | xargs -I {} yumdownloader --destdir=. {}


如果你用的是 Ubuntu,换成 apt-get download 配合 apt-cache depends


2. 导出常用镜像


镜像也必须离线带走。

先在下载机上拉取你需要的镜像:


docker pull nginx:latest
docker pull mysql:8.0

然后保存为 tar 文件:


docker save -o nginx.tar nginx:latest
docker save -o mysql.tar mysql:8.0

注意:同样架构的镜像才能跨机器使用。如果目标机是 ARM(如树莓派),下载机也要拉取对应的 ARM 版本。

核心步骤二:在无网机器上安装 Docker


把上一步下载好的所有 .rpm.deb 文件以及镜像 tar 文件,通过 U 盘、scp 或内网文件服务器传到目标机的同一个目录。


安装命令(CentOS 7):


cd /path/to/your/packages
rpm -ivh *.rpm --nodeps # --nodeps 跳过依赖检查,因为我们已经下载了所有依赖

如果提示文件冲突,可以加上 --replacepkgs--replacefiles


启动 Docker 服务


systemctl start docker
systemctl enable docker

验证安装:


docker version

看到 Client 和 Server 都有版本信息,说明安装成功。


核心步骤三:导入镜像并运行容器


加载镜像


docker load -i nginx.tar
docker load -i mysql.tar

docker images 确认镜像已存在。


启动一个测试容器


docker run -d --name my-nginx -p 8080:80 nginx:latest

然后用浏览器或 curl 测试:


curl http://localhost:8080

如果返回 Welcome to nginx! 就说明 Docker离线部署无网络 完全成功了。


高频问题和避坑指南


1. 缺少 libseccomp 等基础库

离线安装时,系统可能缺乏底层库。解决方案:在下载机用 yumdownloader 额外下载 libseccomplibcgroup 等,或者在目标机上先用本地 ISO 安装基础依赖。


2. dockerd 启动失败,报“iptables: No chain/target/match by that name”

这是缺少 iptables 或内核模块。可以执行 yum install iptables(如果目标机有本地源),或者关闭防火墙:


systemctl stop firewalld
systemctl disable firewalld

也可以修改 /etc/docker/daemon.json 添加 "iptables": false,但会影响网络隔离。


3. 容器运行后无法联网(内外隔离是正常的)

离线环境下容器本身就不能访问公网,但你仍然可以访问宿主机上的端口(比如上面用 8080 映射)。如果需要容器之间通信,确保 docker0 网络存在。


4. docker save 出来的镜像太大,怎么压缩?

可以用 gzip


docker save nginx:latest | gzip > nginx.tar.gz

在目标机上解压再 load:gunzip -c nginx.tar.gz | docker load


效果验证与建议


执行完以上步骤后,推荐做一次完整的功能检查:



  • docker ps 查看正在运行的容器;

  • docker logs my-nginx 确认日志无异常;

  • 重启一次 Docker 服务(systemctl restart docker)确认容器自动恢复;

  • 如果需要持久化数据,请在 docker run 时挂载卷(-v)。


Docker离线部署无网络 其实不难,关键在于提前把系统版本、依赖列表、镜像架构都对上。

如果你在操作中遇到其他报错,优先检查下载的包是否完整、系统内核版本是否匹配。

以上步骤已经经过多次生产环境验证,跟着做就能解决问题。

分享到:
上一篇
新手也能懂的Linux服务器安全基线搭建指南
下一篇
服务器远程管理IPMI VNC:服务器远程管理实战
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意