docker save命令详解
docker save 命令用于将一个或多个 Docker 镜像 打包成 归档文件(tar 格式),便于迁移、备份或离线分发。它不同于 docker export(导出容器文件系统),docker save 会完整保留镜像的 所有层(Layers)、标签(Tags)和元数据。
1. 命令语法
docker save [OPTIONS] IMAGE [IMAGE...] > output.tar
或
docker save [OPTIONS] -o output.tar IMAGE [IMAGE...]
参数说明
| 参数 | 说明 |
|---|---|
IMAGE |
要保存的镜像名称或 ID(支持多个镜像)。 |
-o / --output |
指定输出文件路径(替代 > 重定向)。 |
> output.tar |
使用 Shell 重定向保存为 .tar 文件(与 -o 二选一)。 |
2. 使用示例
(1) 保存单个镜像
docker save alpine:latest > alpine.tar
或
docker save -o alpine.tar alpine:latest
-
将
alpine:latest镜像保存为alpine.tar文件。
(2) 保存多个镜像
docker save ubuntu:20.04 nginx:latest > images.tar
-
将
ubuntu:20.04和nginx:latest打包到同一个images.tar文件。
(3) 保存镜像到指定目录
docker save -o /tmp/backup/redis.tar redis:6.2
-
将
redis:6.2保存到/tmp/backup/redis.tar。
3. 关键特性
(1) 保留完整镜像结构
-
包含镜像的所有层(Layers)、历史记录和元数据。
-
支持多标签镜像(如
my-image:dev和my-image:latest指向同一镜像)。
(2) 离线分发与备份
-
生成的
.tar文件可以:-
通过 U 盘或网络传输到其他机器。
-
上传到私有镜像仓库(需配合
docker load恢复)。
-
(3) 与 docker load 配合使用
-
保存镜像:
docker save -o my-images.tar nginx:latest mysql:5.7 -
恢复镜像:
docker load -i my-images.tar
4. 常见问题
Q1: docker save 和 docker export 的区别?
| 命令 | 对象 | 输出内容 | 典型用途 |
|---|---|---|---|
docker save |
镜像 | 完整镜像(含所有层和元数据)。 | 镜像备份、离线分发。 |
docker export |
容器 | 容器文件系统的快照(无层信息)。 | 容器文件系统迁移。 |
Q2: 如何查看 .tar 文件中的镜像信息?
tar -tf alpine.tar | head # 列出文件内容(镜像层在 `manifest.json` 中描述)
Q3: 保存的镜像体积很大,如何优化?
-
使用
docker image prune清理无用镜像。 -
压缩
.tar文件:docker save alpine:latest | gzip > alpine.tar.gz
5. 实际应用场景
(1) 离线环境部署镜像
-
在有网络的机器上保存镜像:
docker save -o offline-images.tar nginx:latest python:3.9 -
将
offline-images.tar复制到离线机器。 -
在离线机器上加载:
docker load -i offline-images.tar
(2) 批量备份生产环境镜像
docker save $(docker images -q) > all-images.tar
-
备份所有本地镜像(谨慎使用,可能包含无用镜像)。
(3) 迁移镜像到私有仓库
-
保存镜像:
docker save my-app:1.0 > my-app.tar -
上传到私有仓库服务器:
docker load -i my-app.tar docker tag my-app:1.0 my-registry.com/my-app:1.0 docker push my-registry.com/my-app:1.0
6. 总结
| 场景 | 命令示例 | |
|---|---|---|
| 保存单个镜像 | docker save -o image.tar ubuntu:20.04 |
|
| 保存多个镜像 | docker save nginx:latest redis:6.0 > apps.tar |
|
| 加载镜像 | docker load -i image.tar |
|
| 压缩保存 | `docker save alpine:latest | gzip > alpine.tar.gz` |
关键点:
-
docker save适用于 镜像备份和离线分发。 -
配合
docker load可恢复镜像。 -
与
docker export不同,它保留完整的镜像结构。
郭慕荣博客园

浙公网安备 33010602011771号