离线部署容器应用需分在线准备和离线还原两阶段:先在有网环境用docker save打包全部依赖镜像及配套启动文件,再在离线机用docker load加载并验证。

在无网环境中部署离线容器应用,核心不是只装 Docker,而是把“运行环境 + 应用镜像 + 启动逻辑”三者打包带进去。整个过程分两阶段:在线准备、离线还原,缺一不可。
提前打包所有必需的镜像
在有网机器上,先拉取并保存应用依赖的全部镜像,包括基础镜像、中间件、业务镜像及可能的 sidecar(如 nginx、redis、busybox 等):
- 用 docker save 打包单个镜像:
docker save -o app.tar myapp:1.2.0 - 打包多个镜像(含依赖层共享):
docker save -o full-stack.tar nginx:alpine redis:7.2 myapp:1.2.0 - 若使用 docker-compose,需明确列出
services.*.image中所有镜像,逐个 save,避免遗漏
导出配套的启动与编排文件
光有镜像不够,还得让它们能正确启动:
- 把 docker-compose.yml 及其引用的
.env、配置文件(如 nginx.conf)、初始化脚本(init.sh)一并复制过去 - 若不用 Compose,至少准备好等效的 docker run 命令清单(建议写成 shell 脚本,含 --network、--volume、--env 等关键参数)
- 注意路径一致性:离线机上的挂载目录(如
/data、/config)需提前创建并赋权
离线机上完成加载与验证
传入文件后,按顺序执行:
- 加载镜像:
docker load (支持管道,无需解压) - 检查是否就位:
docker images | grep -E "(myapp|redis|nginx)" - 启动前确认 Docker 守护进程已运行:
sudo systemctl is-active docker,未运行则sudo systemctl start docker - 首次运行建议加
--rm和简单健康检查,例如:docker run --rm myapp:1.2.0 /bin/sh -c "echo 'ready' && exit 0"
补充:处理常见离线运行障碍
有些问题看似是网络问题,实则是离线环境特有缺失:
-
时区/证书错误:提前在离线机安装
ca-certificates和tzdata包(随 Docker 一起离线安装) -
cgroup 或 /dev/pts 不可用:确认内核支持 cgroup v2(Ubuntu 22.04+ 默认启用),必要时在
/etc/default/grub加systemd.unified_cgroup_hierarchy=1 -
镜像启动失败但无报错:用
docker logs <container_id>查日志;若容器秒退,加-it参数手动进入调试


















