docker 保存镜像、容器与导入镜像容器

docker save

可以通过以下步骤将Docker镜像导出到另一台计算机上:

  1. 在本地计算机上使用以下命令将Docker镜像保存为tar文件:

    docker save -o .tar 
    

    其中,是要导出的Docker镜像的名称。

  2. 将保存的tar文件传输到另一台计算机上,可以使用scp命令或其他文件传输工具。

  3. 在目标计算机上使用以下命令将tar文件加载为Docker镜像:

    docker load -i image-name.tar
    

    其中,是要导入的Docker镜像的名称。

  4. 确认镜像已成功导入,可以使用以下命令查看:

    docker images
    

    如果成功导入,将会看到导入的Docker镜像的名称和版本号。

注意:在导出和导入Docker镜像时,需要确保两台计算机上的Docker版本相同或兼容。

docker export

Docker可以使用docker export命令来导出一个container。具体命令如下:

docker export container_id > file_name.tar
docker import - new_hangger_server < file_name.tar

这个命令会将container的文件系统打包成一个tar文件,并输出到标准输出流中。我们可以使用重定向符号将其保存到一个文件中。

导出的内容与导出images有以下区别:

  1. 导出的是container,而不是image。导出的内容包含了container的文件系统,但不包含Docker镜像的元数据和配置信息。
  2. 导出的内容是一个tar文件,而不是Docker镜像。导出的内容可以被导入到其他Docker环境中,但需要手动创建一个新的container。
  3. 导出的内容不包含container的元数据和配置信息。如果需要导出container的元数据和配置信息,可以使用docker inspect命令。

因此,导出container和导出images的目的和使用场景是不同的。导出container主要用于备份和迁移container的文件系统,而导出images主要用于分享和分发Docker镜像。

附:两种方案的差别

特别注意:两种方法不可混用。
如果使用 import 导入 save 产生的文件,虽然导入不提示错误,但是启动容器时会提示失败,会出现类似"docker: Error response from daemon: Container command not found or does not exist"的错误。

1,文件大小不同

export 导出的镜像文件体积小于 save 保存的镜像

2,是否可以对镜像重命名

  • docker import 可以为镜像指定新名称
  • docker load 不能对载入的镜像重命名

3,是否可以同时将多个镜像打包到一个文件中

  • docker export 不支持
  • docker save 支持

4,是否包含镜像历史

  • export 导出(import 导入)是根据容器拿到的镜像,再导入时会丢失镜像所有的历史记录和元数据信息(即仅保存容器当时的快照状态),所以无法进行回滚操作。
  • save 保存(load 加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。

5,应用场景不同

  • docker export 的应用场景:主要用来制作基础镜像,比如我们从一个 ubuntu 镜像启动一个容器,然后安装一些软件和进行一些设置后,使用 docker export 保存为一个基础镜像。然后,把这个镜像分发给其他人使用,比如作为基础的开发环境。
  • docker save 的应用场景:如果我们的应用是使用 docker-compose.yml 编排的多个镜像组合,但我们要部署的客户服务器并不能连外网。这时就可以使用 docker save 将用到的镜像打个包,然后拷贝到客户服务器上使用 docker load 载入。

你可能感兴趣的:(docker,docker,容器,运维)