首页/云/Docker 容器速查/docker save 导出镜像为 tar
镜像与构建107 条

docker save 导出镜像为 tar

把镜像连同标签、层与历史记录导出为 tar 归档,用于离线分发与备份;可直接管道加 gzip 压缩后传输。

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

docker save 是什么

save 把本地镜像导出成一个 tar 归档,归档里包含全部层、标签与镜像配置,相当于把镜像完整打包带走。它的典型用途是跨网络分发:外网机器 pull 之后 save,把文件拷进内网再 load。与之对应的 import/export 走的是另一条路线——export 只导出容器当前的扁平文件系统,丢弃分层与配置。要搬运镜像本体,认准 save 与 load 这一对。

基本信息

语法docker save -o 文件.tar 镜像[:标签] [更多镜像…]
管道用法docker save 镜像 | gzip > 文件.tar.gz
还原命令docker load -i 文件.tar 或 docker load < 文件.tar
保留内容全部层、标签、镜像配置与构建历史
不保留内容容器内的运行期改动、挂载卷里的数据
适用平台所有 Docker 环境;跨架构搬运需目标节点架构匹配

典型使用场景

  • 离线交付:把生产镜像打包带进没有外网的内网环境
  • 临时分发:在没有私有仓库的现场快速传递镜像
  • 备份关键版本:发布前留一份归档,便于回滚
  • 迁移整套环境:多个镜像一次导出,目标机批量 load
  • 排障对照:把出问题的镜像归档交给他人复现

导出与还原

导出与还原
# 导出单个镜像到文件
docker save -o app-web-1.0.tar app/web:1.0

# 直接压缩,传输体积明显减小
docker save app/web:1.0 | gzip > app-web-1.0.tar.gz

# 一次导出多个镜像(每个镜像可带多个标签,全部保留在归档里)
docker save -o bundle.tar app/web:1.0 app/api:1.4.2

# 目标机器还原:load 会恢复标签,无需再打标签
docker load -i app-web-1.0.tar
gunzip -c app-web-1.0.tar.gz | docker load

# 校验搬运结果:比对镜像 ID 与导出源是否一致
docker images --format '{{.Repository}}:{{.Tag}} {{.ID}} {{.Size}}'

save 与 export 对比

维度docker savedocker export
对象本地镜像容器文件系统
分层保留全部层与历史压平为单层快照
标签与配置保留不保留
还原命令docker loaddocker import
卷数据不含不含
典型用途镜像分发与备份旧式根文件系统迁移
归档体积接近镜像解压后的总大小,导出前确认目标盘余量;网络传输后建议先在干净环境 load 并运行一次,避免搬运损坏在交付现场才发现。
save 只搬运镜像,运行期数据在卷里不会被带走。迁移整套服务时,数据库等有状态数据要单独做备份与还原。

易错点

  • 把 save 归档当成可回滚备份:它只含镜像,配置、密钥与卷数据都不在内,恢复整套服务会缺件
  • 用 export 代替 save 分发镜像,导入后没有启动配置与标签,目标机还得重新手工指定命令
  • 跨架构直接搬运并运行会报 exec format error,交付前先确认目标节点架构与镜像一致
  • 归档不写版本信息,久放后无法分辨对应哪次发布,导出的文件名建议带上镜像名与标签

数据来源与参考

  • Docker 官方 CLI 参考:docker image save(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌