Docker 中 \`docker save\` 和 \`docker export\` 的区别与选择
Docker 中 \`docker save\` 和 \`docker export\` 的区别与选择
ZhangCurryDocker 中 `docker save` 和 `docker export` 的区别与选择
docker save 和 docker export 都是用于将 Docker 镜像或容器打包成文件的命令,但它们的应用场景和生成的文件有本质区别,主要差异如下:
一、核心区别
| 特性 | docker save |
docker export |
|---|---|---|
| 处理对象 | 镜像(Image) | 容器(Container,需处于停止状态) |
| 文件格式 | 包含镜像分层、元数据的 tar 包 | 仅包含容器文件系统的 tar 包(无分层信息) |
| 是否保留历史 | 保留完整的镜像分层和历史记录 | 不保留历史,仅导出当前容器的文件系统 |
| 导入命令 | 需用 docker load 导入 |
需用 docker import 导入 |
| 典型用途 | 备份镜像、迁移镜像(含完整信息) | 导出容器快照、制作基础镜像(精简) |
二、详细用法
1. docker save(处理镜像)
作用:将一个或多个镜像打包为 tar 文件,保留镜像的完整分层结构、标签、元数据等。
语法:
1 | docker save \[选项] 镜像名\[:标签]... -o 输出文件名.tar |
示例:
1 | \# 保存单个镜像 |
导入方式(使用 docker load):
1 | docker load -i ubuntu20.tar # 导入后保留原镜像名和标签 |
2. docker export(处理容器)
作用:将一个运行过的容器(需先停止)导出为 tar 文件,仅包含容器当前的文件系统状态,不保留镜像分层和历史。
语法:
1 | docker export \[选项] 容器ID/容器名 > 输出文件名.tar |
示例:
1 | \# 先停止容器(若运行中) |
导入方式(使用 docker import):
1 | \# 导入为新镜像,需手动指定镜像名和标签 |
三、如何选择?
若需 备份或迁移完整镜像(含版本历史、分层缓存),用
docker save+docker load。若需 导出容器的当前状态(如作为基础镜像分发,追求精简),用
docker export+docker import。
注意:docker export 生成的文件通常比 docker save 小,但丢失了镜像的分层信息,导入后无法增量更新。
(注:文档部分内容可能由 AI 生成)



