将docker映像推送到另一台主机上的docker注册

时间:2018-09-01 12:02:58

标签: docker docker-registry

我有两台都装有docker的计算机,我想将我制作的docker映像保留到另一台主机,该主机不连接到互联网,但是在本地LAN上。

这是我的机器(我使用hello-world图片示例)

macHost:~ ciasto$ docker tag hello-world 192.168.0.6:5000/hello-world

然后我尝试docker push 192.168.0.6:5000/hello-world

但这会引发错误:

The push refers to a repository [192.168.0.6:5000/hello-world]
Get https://192.168.0.6:5000/v2/: dial tcp 192.168.0.6:5000: getsockopt: connection refused

所以我尝试了没有5000端口的情况。

$ docker push 192.168.0.6/hello-world-2

也抛出相同的错误:

The push refers to a repository [192.168.0.6/hello-world-2]
Get https://192.168.0.6/v2/: dial tcp 192.168.0.6:443: getsockopt: connection refused

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

Docker Registry是特定的软件;您不能直接将docker push图像复制到另一个系统。

几乎可以肯定,最好的工作流程是写一个Dockerfile来描述如何构建图像。这是一个简单的文本文件,与外壳脚本完全不同,通常会添加到源代码存储库中。然后,在另一个系统上,您可以检出存储库并运行docker build并获得功能上等效的映像。

如果您的网络是半隔离的,则始终可以运行自己的注册表。假设您设置了本地DNS,以使主机名my-registry.local解析为192.168.0.123;那么您可以docker tag my-registry.local/me/imagename的本地图像,docker push从一个系统,docker pull从另一个系统。

维护最少,可重复性最低,最长的长期努力路径是docker save第一个系统上的图像,scp或以其他方式将其传输到第二个系统,然后docker load在那里。如果您有动力,甚至可以一步一步实现

docker save me/imagename | ssh elsewhere docker load

如果“其他地方”系统实际上与网络断开连接,并且“将其复制到另一个系统”步骤涉及将映像文件复制到可移动媒体上,则您将被迫执行此操作。但是,如果您只是定期执行此操作,或者具有多个目标系统,则可能会发现建立本地注册表是一项不错的投资。