首页/云/云与容器速查/docker save 导出镜像为 tar
容器与 Docker106 条

docker save 导出镜像为 tar

把镜像(含全部层与元数据)导出成 tar 文件:用于离线环境交付、跨机器搬运;与 docker export(容器文件系统快照)完全不同。

云与容器速查云更新于 2026-10-13

docker save 是什么

docker save 把镜像连同全部层与元数据导出成一个 tar 文件,可以在没有外网的环境重新导入使用。它和 docker export 是两件事:export 导出的是容器文件系统快照,丢掉镜像的层信息、标签与历史,导入后只是一个单层镜像;save 导出的文件用 docker load 导入后能得到几乎完全一致的镜像,是离线交付的标准做法。save 本身没有压缩参数,可以通过管道配合 gzip 减小体积。

基本信息

语法docker save -o app.tar 镜像[:tag],也可以直接输出到标准输出
内容镜像全部层加标签与配置,可用 docker load 完整还原
对比 exportexport 导出容器文件系统,没有层信息、标签与历史
压缩save 无压缩参数,可管道接 gzip 生成压缩包
导入docker load -i app.tar,或 zcat 后接 docker load

典型使用场景

  • 内网或隔离环境交付镜像,目标机器无法访问任何镜像仓库
  • 跨机器搬运镜像做临时验证,避免为一次性操作搭一套仓库
  • 归档某个版本镜像用于后续回滚,保留可验证的历史交付物
  • 离线演示与培训环境,在无网条件下快速铺开完整环境
  • 镜像仓库故障期间作为应急分发手段,把镜像送到各节点

导出与导入

导出与导入
docker save -o myapp-1.0.0.tar myapp:1.0.0
docker save myapp:1.0.0 | gzip > myapp-1.0.0.tar.gz   # 管道压缩,节省传输体积
docker load -i myapp-1.0.0.tar   # 目标机器导入
gzip -dc myapp-1.0.0.tar.gz | docker load   # 压缩包直接导入
docker images myapp   # 导入后核对镜像 ID 与标签是否一致

save 与 export 对比

维度docker savedocker export
作用对象镜像容器
导出内容全部层、标签与配置容器文件系统快照
导入命令docker loaddocker import,得到单层镜像
是否保留标签保留不保留,需要手工重新打标
典型用途离线交付、镜像搬运提取根文件系统用于分析
离线环境常用的交付方式是『save 导出传输 + load 导入』;镜像体积很大时先做精简(多阶段构建、裁剪依赖与构建缓存)再导出,传输和导入都更快。
导出的 tar 包含镜像的全部层与原始文件:如果构建过程中曾写入密钥或敏感配置,导出文件会一并带出,交付或外发前先确认镜像本身已经清理干净。

易错点

  • 用 export 得到的容器文件系统冒充镜像交付,导入后丢标签与层信息,无法复用构建缓存
  • 大镜像不做压缩直接传输,浪费数倍带宽与时间
  • 多架构镜像只 save 本机架构的部分,目标机器架构不同时导入后无法运行
  • 导出的 tar 长期散落在宿主目录中不做清理,磁盘被历史镜像包占满

数据来源与参考

  • Docker Docs:docker save

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌