docker save/load 配合 gzip 是离线镜像迁移的标准方案:先用 save 打包镜像(支持单/多镜像自动去重)并管道压缩为 tar.gz,再通过物理介质或内网传输至目标机,最后用 load 或 zcat 管道导入,全程不依赖网络与 registry,完整保留层结构、元数据和标签。

用 docker save 打包导出、docker load 加载导入,配合 gzip 压缩就能高效完成离线镜像压缩包的流转。
导出镜像并压缩成 tar.gz
在有网络的机器上操作,直接边打包边压缩,不生成中间大文件:
- 单个镜像:
docker save nginx:1.25 | gzip > nginx-1.25.tar.gz - 多个镜像(自动去重共享层):
docker save redis:7.2 python:3.11-slim nginx:1.25 | gzip > app-stack.tar.gz - 注意务必指定明确标签(如
nginx:1.25而非nginx:latest),避免导入后标签丢失
安全传输压缩包
tar.gz 是普通二进制文件,选一种内网可用方式传到目标机器即可:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 局域网常用
scp:scp app-stack.tar.gz user@192.168.10.100:/tmp/ - U 盘或移动硬盘拷贝(适合完全断网环境)
- 通过内网 FTP、Samba 或 NFS 共享目录上传下载
- 传输前检查目标机磁盘空间:压缩包解压后实际占用可能翻倍,留足临时空间
导入压缩包还原镜像
在离线的目标机器上执行,Docker 会自动解压并重建完整镜像结构:
- Linux/macOS 直接管道加载:
zcat app-stack.tar.gz | docker load - 或先解压再加载:
gunzip app-stack.tar.gz && docker load -i app-stack.tar - 验证是否成功:
docker images查看 REPOSITORY 和 TAG 是否与导出时一致 - 导入不依赖外部仓库,也不拉取缺失层——所以源镜像必须是本地已完整拉取的
千万别用 export/import 替代
这两个命令操作的是容器(container),不是镜像(image):
-
docker export只保存容器当前文件系统快照,丢弃所有构建历史、环境变量、默认命令、分层结构 -
docker import生成的是无历史、无元数据的“扁平”镜像,无法用于正常部署 - 离线迁移场景下,95% 以上都该用
save/load组合










