Docker 镜像导出与离线导入

Docker 镜像导入导出的应用场景

  1. 制作基础镜像
    • 从基础镜像启动容器,安装软件并设置后
    • 使用 docker export 保存为新的基础镜像
    • 分发给其他人使用,作为开发环境基础
  2. 离线部署
    • 应用使用 docker-compose 编排的多个镜像
    • 目标服务器无法连外网
    • 使用 docker save 打包镜像,拷贝到目标服务器
    • 使用 docker load 载入镜像
  3. 镜像迁移和备份
    • 将镜像从一台机器迁移到另一台
    • 对镜像进行备份,以便将来使用
  4. 镜像升级
    • 将旧版本镜像导出为 tar 包
    • 从 tar 包导入升级后的新镜像

Docker 镜像导入导出的方法

Docker 提供了两种主要的方式来导入导出镜像:

  1. 使用 save 和 load
    • docker save 命令可以将一个或多个镜像保存成一个 tar 归档文件
      • 示例: docker save -o myimage.tar myimage:latest
    • docker load 命令从 tar 归档文件或标准输入中加载镜像
      • 示例: docker load < myimage.tar
    • save 和 load 保留了完整的镜像历史记录和元数据信息,支持同时保存多个镜像
  2. 使用 export 和 import
    • docker export 命令可以将容器的文件系统导出为一个 tar 归档文件
      • 示例: docker export mycontainer > mycontainer.tar
    • docker import 命令从 tar 归档文件或 URL 导入容器快照,并创建镜像
      • 示例: docker import mycontainer.tar myimage:v1
    • export 和 import 只保留容器当时的快照状态,丢失了历史记录和元数据信息,不支持同时导出多个容器

Docker 镜像导入导出示例

Docker 镜像导入导出操作可以帮助您将镜像在不同的 Docker 主机之间迁移,或者备份和恢复镜像。

1. 导出镜像

使用 docker save 命令将一个或多个镜像保存到一个 tar 压缩文件中。

bashdocker save [镜像名:标签] > [压缩文件名.tar]

例如,将名为 nginx:latest 的镜像保存到 nginx.tar 文件中:

bashdocker save nginx:latest > nginx.tar

2. 导入镜像

使用 docker load 命令将之前保存的 tar 压缩文件加载到 Docker 主机中。

bashdocker load < [压缩文件名.tar]

例如,将 nginx.tar 文件加载到 Docker 主机中:

bashdocker load < nginx.tar

注意:

  • docker save 命令会将镜像的所有层都保存到 tar 压缩文件中,包括基础镜像。
  • docker load 命令会将 tar 压缩文件中的所有层都加载到 Docker 主机中。
  • 导入镜像后,您需要使用 docker run 命令来运行该镜像。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注