docker save 命令可将本地镜像打包为 tar 文件,保留所有层、标签和元数据,适用于备份、离线迁移或跨主机分发;推荐使用 -o 选项指定输出路径,支持单镜像、多镜像(自动去重)及绝对路径;也可通过重定向输出,但大镜像优先选 -o;导出后建议用 ls、tar -tf 和 docker load -i 验证;注意仅保存镜像结构,不包含运行时状态。

直接用 docker save 命令就能把本地镜像打包成 tar 文件,它保留所有层、标签和元数据,适合备份、离线迁移或跨主机分发。
指定输出文件路径(推荐)
最常用也最稳妥的方式是用 -o 选项明确指定 tar 文件路径:
-
docker save -o nginx.tar nginx:latest—— 导出单个镜像 -
docker save -o myapp.tar nginx:alpine redis:7.2 alpine:3.20—— 多个镜像打到同一个 tar 中,共享层自动去重 -
docker save -o /opt/backups/app-images.tar app/web:v1 app/db:v2—— 支持绝对路径,注意目标目录需有写权限
不加 -o 时用重定向
省略 -o,命令默认输出到 stdout,靠 shell 重定向写入文件:
docker save nginx:alpine > nginx.tar-
docker save ubuntu:22.04 | gzip > ubuntu.tar.gz—— 可即时压缩,节省空间
注意:大镜像用重定向可能因缓冲问题中断,优先选 -o;管道方式更适合需要压缩或后续处理的场景。
验证导出结果
生成 tar 后建议快速检查:
-
ls -lh nginx.tar—— 看文件大小是否合理(通常接近docker images显示的 SIZE) -
tar -tf nginx.tar | head -5—— 查看归档内容,应含manifest.json和多个layer.tar -
docker load -i nginx.tar—— 在另一台机器或测试环境试加载,确认可用
常见注意事项
导出前确保镜像已在本地存在(docker images 能查到),且磁盘空间充足;导出文件不含运行时状态,只包含构建时的镜像结构;若要保存容器当前状态(如修改过的文件系统),应使用 docker export,而非 save。











