Docker镜像导入、导出操作指南
文章目录
- Docker镜像导入、导出操作指南
- 一、镜像导出与导入(`docker save/load`)
- 1. **导出完整镜像**
- 2. **导入完整镜像**
- 二、容器导出与导入(`docker export/import`)
- 1. **导出容器快照**
- 2. **导入容器快照为镜像**
- 三、关键区别与适用场景
- 四、常见问题与解决方案
- 五、操作流程图
- 六、扩展技巧
Docker镜像导入、导出操作指南
一、镜像导出与导入(docker save/load
)
1. 导出完整镜像
-
命令
docker save -o <输出文件名>.tar <镜像名:标签> # 示例:导出带标签的镜像 docker save -o redis_backup.tar redis:6.0.16
-
特性
- 保留完整镜像层、元数据(标签、历史记录)
- 支持多镜像打包:
docker save -o combined.tar image1:tag1 image2:tag2
- 可压缩传输:
docker save image:tag | gzip > image.tar.gz
2. 导入完整镜像
-
命令
docker load -i <输入文件名>.tar # 示例:导入并自动保留原标签 docker load -i redis_backup.tar
-
特性
- 自动恢复镜像所有层和元数据
- 导入后镜像名称与原镜像一致,需重命名时使用
docker tag <镜像ID> <新名称>:<标签>
二、容器导出与导入(docker export/import
)
1. 导出容器快照
-
命令
docker export -o <输出文件名>.tar <容器ID或名称> # 示例:导出运行中的容器 docker export -o redis_snapshot.tar 7cbed6522d8a
-
特性
- 仅保存容器当前文件系统状态,丢失历史层和元数据(如启动命令、环境变量)
- 文件体积较小(约比完整镜像小 50%-70%)
2. 导入容器快照为镜像
-
命令
docker import <输入文件名>.tar <新镜像名>:<标签> # 示例:导入并重命名 docker import redis_snapshot.tar redis:v2
-
特性
- 生成单层镜像,需手动补充元数据(如
CMD
、ENTRYPOINT
) - 支持导入时指定新名称和标签
- 生成单层镜像,需手动补充元数据(如
三、关键区别与适用场景
特性 | docker save/load (镜像操作) | docker export/import (容器操作) |
---|---|---|
操作对象 | 完整镜像(含历史层) | 容器快照(仅当前状态) |
元数据保留 | ✅ 完整保留标签、历史记录 | ❌ 仅文件系统 |
文件体积 | 较大(含多层数据) | 较小 |
适用场景 | 迁移/备份完整镜像环境 | 快速创建容器模板或基础镜像 |
导入后重命名支持 | ❌ 不支持 | ✅ 支持 |
四、常见问题与解决方案
- 导入失败
- 原因:文件类型不匹配(如用
docker import
加载save
生成的文件)或文件损坏。 - 解决:校验文件完整性(
md5sum
),确保使用正确命令。
- 原因:文件类型不匹配(如用
- 权限问题
- 解决:使用
sudo
或将用户加入docker
用户组。
- 解决:使用
- 跨平台兼容性
- 注意:
save/load
保留原始架构(如 ARM/X86),需确保目标环境匹配。
- 注意:
- 镜像重命名
- 操作:导入后通过
docker tag <旧ID> <新名称>:<标签>
修正名称。
- 操作:导入后通过
五、操作流程图
# 镜像迁移流程
导出镜像 → docker save → 生成.tar文件 → 传输到目标环境 → docker load → 导入镜像 → docker tag重命名# 容器快照流程
导出容器 → docker export → 生成.tar文件 → docker import → 生成新镜像(需补充元数据)
六、扩展技巧
- 批量导出:结合
grep
和xargs
快速导出多个镜像。 - 自动化脚本:编写 Shell 脚本实现镜像打包、压缩、传输全流程。
- 元数据补充:导入容器快照时通过
-c
参数指定启动命令(如docker import -c "CMD [\"nginx\", \"-g\", \"daemon off;\"]" snapshot.tar nginx:custom
)。
通过合理选择 save/load
或 export/import
,可高效实现 Docker 镜像的备份、迁移与快速部署。