选择依据

  • 保留镜像历史和元数据:使用 docker save 和 docker load。
  • 仅需要容器的文件系统:使用 docker export 和 docker import。 每种方法有其适用的场景,选择哪种方法取决于你的具体需求。

对比

docker save 和 docker load 确实提供了更强大的功能,尤其在保留镜像历史和元数据方面。然而,docker export 和 docker import 也有其特定的用途和优点。以下是它们之间的主要区别和使用场景:

主要区别

  1. 保存和导入内容:

    • docker save 和 docker load:处理的是镜像,包含镜像的所有层、历史记录和元数据。
    • docker export 和 docker import:处理的是容器,导出的是容器的文件系统,不包含镜像的历史和元数据。
  2. 使用场景:

    • docker save/load:适用于需要完整保留镜像历史和元数据的情况,方便在不同环境间迁移和分发镜像。
    • docker export/import:适用于只需备份或迁移容器文件系统的情况,或在一些需要对文件系统进行简化处理的场景。

具体实例说明

使用 docker save 和 docker load

步骤:

  1. 创建镜像:

    docker pull nginx
    docker tag nginx my_nginx_image
  2. 保存镜像:

    docker save -o my_nginx_image.tar my_nginx_image
  3. 加载镜像:

    docker load -i my_nginx_image.tar
  4. 运行新镜像:

    docker run -d --name new_nginx_container my_nginx_image

这种方法保留了镜像的所有层和元数据,适合在不同环境间迁移镜像。

使用 docker export 和 docker import

步骤:

  1. 创建并启动一个容器:

    docker run -d --name my_nginx_container nginx
  2. 导出容器文件系统:

    docker export -o my_nginx_container.tar my_nginx_container
  3. 从 tar 文件导入为新镜像:

    docker import my_nginx_container.tar my_imported_nginx
  4. 运行新镜像:

    docker run -d --name new_nginx_container my_imported_nginx

这种方法只导出和导入容器的文件系统,适用于需要对文件系统进行简化处理或在一些特定情况下的备份和迁移。