docker save 导出的 tar 镜像文件可用 docker load 直接恢复,保留所有标签、层和元数据;仅处理镜像本身,不包含运行时状态;跨平台传输需注意架构匹配;勿混淆 docker export/import(仅导出容器文件系统快照)。

用 docker save 导出的镜像文件(通常是 tar 包),可以通过 docker load 命令直接恢复到本地 Docker 环境中,无需重新构建或联网拉取。
导出镜像:用 docker save
先确认要导出的镜像 ID 或名称(可用 docker images 查看):
- 导出单个镜像为 tar 文件:
docker save -o myapp.tar myapp:latest - 导出多个镜像(如带依赖的完整镜像集):
docker save -o all-images.tar image1:tag image2:tag - 不指定
-o时会输出到标准输出,可配合重定向:docker save nginx:alpine > nginx.tar
导入镜像:用 docker load
导入时只需指向导出的 tar 文件,Docker 会自动解压并注册所有镜像层和元数据:
- 从文件加载:
docker load -i myapp.tar - 也可通过管道方式(适合脚本):
cat myapp.tar | docker load - 成功后运行
docker images即可看到已加载的镜像,标签、ID、大小等信息均保留原样
注意点和常见问题
导出/导入过程不包含容器运行时状态(比如正在运行的容器、挂载卷、网络配置),只处理镜像本身:
- 如果镜像有多个 tag,
docker save会一并保存;docker load后所有 tag 都可用 - tar 文件可跨平台传输(Linux/macOS/Windows 的 Docker Desktop 均支持),但镜像架构需匹配目标主机(如 arm64 镜像不能在 amd64 主机上运行)
- 若提示
no such image,检查镜像名是否拼写正确,或先用docker images确认是否存在
替代方案:用 docker export 和 docker import?
注意别混淆:docker export 导出的是**容器文件系统快照**(无分层、无历史、无元数据),生成的是扁平化 tar;docker import 加载后得到的是一个新镜像,但丢失了原始镜像的 layer 结构和构建信息。这不是镜像备份的推荐方式,仅适用于简单打包运行中的容器状态。
真正做镜像迁移或离线分发,请坚持用 save/load 组合。


















