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

新手上路,请多包涵

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

我在 VirtualBox 中创建自己的映像,完成后我尝试部署到其他机器以进行实际使用。

由于它基于我自己的镜像(如 Red Hat Linux),因此无法从 Dockerfile 重新创建它。我的 dockerfile 不容易移植。

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

原文由 Larry Cai 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 287
2 个回答

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

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

然后使用常规文件传输工具将您的图像复制到新系统,例如 cpscprsync (大文件首选)。之后,您必须将图像加载到 Docker 中:

 docker load -i <path to image tar file>

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

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

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

原文由 Daiwei 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

请注意, docker load 自动为您解压缩图像。它支持 gzipbzip2xz

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

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

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

@Thomas Steinbach 的重要说明:在高带宽上, bzip 将无法足够快地压缩。如果您可以以 10 MB/s 或更高的速度上传, gzip / gunzip 将比 bzip2 快得多。

如果您使用 3G 并且您的互联网速度很慢, @jgmjgm 建议您可以使用 xz :它提供更高的压缩比。

原文由 kolypto 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题