协慌网

登录 贡献 社区

如何在不使用存储库的情况下将 Docker 镜像从一个主机复制到另一个主机

如何在不使用存储库的情况下将 Docker 镜像从一台计算机传输到另一台计算机,无论是私有还是公共?

我习惯在 VirtualBox 中播放并创建自己的图像,当它完成后,我尝试部署到其他机器上以实现真正的用途。

由于它基于自己的映像(如 Red Hat Linux),因此无法从 Dockerfile 重新创建它。

我可以使用简单的命令吗?或另一种解决方案

看来 save / export 可以达到类似的目的,看看Docker 中保存和导出有什么区别? ,我更喜欢我的案例的save命令。

答案

您需要将 Docker 镜像保存为 tar 文件:

docker save -o <path for generated tar file> <image name>

然后使用常规文件传输工具(如cpscp将映像复制到新系统。之后,您将不得不将图像加载到 Docker 中:

docker load -i <path to image tar file>

PS:你可能需要sudo所有命令。

编辑:您应该使用 - o 添加文件名(而不仅仅是目录),例如:

docker save -o c:/myfile.tar centos:16

通过 SSH 传输 Docker 镜像,即时压缩内容:

docker save <image> | bzip2 | \
     ssh user@host 'bunzip2 | docker load'

pv放在管道中间以查看传输的进展情况也是一个好主意:

docker save <image> | bzip2 | pv | \
     ssh user@host 'bunzip2 | docker load'

(有关pv更多信息: 主页手册页 )。

要将映像保存到任何文件路径或共享 NFS 位置,请参阅以下示例。

通过执行以下操作获取图片 ID:

sudo docker images

假设您有一个 id 为 “matrix-data” 的图像。

使用 id 保存图像:

sudo docker save -o /home/matrix/matrix-data.tar matrix-data

将映像从路径复制到任何主机。现在使用以下命令导入到本地 Docker 安装:

sudo docker load -i <path to copied image file>