docker 镜像的导出和导入(导出完整镜像和导出容器快照)

一、导出原始镜像

1. 使用 docker save 导出完整镜像

适用场景 :保留镜像的所有层、元数据、标签和历史记录,适合迁移或备份完整镜像环境。 操作命令

复制代码
docker save -o <导出文件名.tar> <镜像名:标签>

示例:docker save -o milvus_backup.tar milvusdb/milvus:v2.5.6

参数说明

  • -o:指定导出的文件名,如 milvus_backup.tar
  • <镜像名:标签>:需导出的镜像名称及标签(如 milvusdb/milvus:v2.5.6)。

扩展功能

  • 导出多个镜像docker save -o combined.tar image1:tag1 image2:tag2

  • 压缩导出文件docker save image:tag | gzip > image.tar.gz

    二、导入镜像

  • 1. 使用 docker load 导入完整镜像

适用场景 :导入通过 docker save 导出的完整镜像文件,保留所有元数据。 操作命令

复制代码
docker load -i <导出文件名.tar>

示例:docker load -i milvus_backup.tar

导入后镜像名称和标签与原镜像一致,若需重命名,需使用 docker tag 命令:

复制代码
docker tag <原镜像ID> <新镜像名:新标签>

三、使用 docker import 导入容器快照

适用场景 :若文件是通过 docker export 导出的容器快照(非完整镜像),需使用此命令导入为镜像。 操作命令

复制代码
docker import <快照文件.tar> <新镜像名:标签>

示例:docker import milvus_snapshot.tar milvus_custom:v2.5.6

不保留历史层和元数据(如环境变量、启动命令),需手动指定启动参数 。

可添加元数据:docker import -c "ENV LANG=en_US.UTF-8" snapshot.tar image:tag

四、关键区别与注意事项

1. docker save/load vs docker export/import
特性 docker save/load docker export/import
数据类型 完整镜像(含所有层和元数据) 容器快照(仅文件系统状态)
保留历史层
适用场景 迁移、备份完整镜像 快速创建镜像或恢复容器状态
文件生成方式 docker save docker export
2. 常见问题排查
  • 导入失败

    • 文件类型不匹配 :确认文件是 docker save 生成(用 docker load)还是 docker export 生成(用 docker import) 。
    • 文件损坏 :校验文件完整性(如 md5sum),重新导出或传输文件。
    • 存储空间不足 :检查 Docker 存储路径 /var/lib/docker 的剩余空间,必要时迁移存储目录。
  • 权限问题 :确保当前用户对导出文件有读取权限(chmod +r file.tar

四、操作流程图

复制代码
导出镜像 → docker save → 生成.tar文件 → 传输到目标环境 → docker load → 导入镜像 → docker tag重命名
                            
导出容器 → docker export → 生成.tar文件 → docker import → 生成新镜像(需补充元数据)
相关推荐
NamoAmitabha1281 小时前
libpng12-0 1.2.54-1ubuntu1.1 (amd64 binary) in ubuntu xenial
linux·ubuntu20.4
Madison-No71 小时前
搭建项目测试环境
linux·运维·服务器·python
吴声子夜歌2 小时前
Shell编程实例——编写安全的shell脚本(二)
linux·运维·shell
悠悠121383 小时前
微服务通信别只看性能:REST 与 gRPC 的 6 个选型判断和一次 502 故障复盘
运维·服务器
xiaoye-duck4 小时前
《Linux 网络编程》深入理解 IP 协议(二):网段划分、私有 IP 与 NAT 地址转换
linux·网络·ip
云老大-阿里云国际站代理商4 小时前
华为云国际站服务代理商:NAT网关怎么配?多台ECS共用公网IP要注意什么
服务器·华为云·云计算
zx_741484815 小时前
【Linux入门】Shell 函数、正则表达式与文本处理:cut 与 awk
linux·运维·正则表达式
Zenova EdgeOS5 小时前
Linux dmesg 工业边缘实战:内核日志过滤、持久化与故障定位
linux·运维·边缘计算·工业边缘·dmesg·内核日志
金士顿5 小时前
System.Text.Json Source Generator 深度解析:为什么 Native AOT 不喜欢反射
linux·asp.net core·arm64·net·native aot
wdfk_prog6 小时前
ROS教程08:从 TransportTCP::connect() 追到 TCPROS Connection Header、序列化与 Socket 数据传输
运维·缓存·docker·容器·ros