我只想把它放在这里,因为很难找到有关该主题的信息,我最终自己解决了。
设置
curl localhost:5000/v2/_catalog
提供了已安装注册表的列表。
到目前为止很好。
docker tag {my image} localhost:5000/{my image}
docker push localhost:5000/{my image}
结果
The push refers to repository [localhost:5000/{my image}]
Get http://localhost:5000/v2/: dial tcp 127.0.0.1:5000: connect: connection refused
我们如何连接到转发到localhost的注册表端口?
答案 0 :(得分:0)
我发现一些晦涩的帖子暗示您需要制作一个自定义特权容器,并在容器内进行ssh堡垒端口转发。这实际上是在解决docker守护程序实际上在虚拟机内部运行这一事实所引起的问题!
https://docs.docker.com/docker-for-windows/networking/
您可以在此处找到提示:
我想从主机连接到主机上的服务 IP地址正在更改(如果没有网络访问权限,则没有)。 从18.03开始,我们建议您连接到特殊的DNS 名称host.docker.internal,解析为内部IP地址 由主机使用。这是出于发展目的,不适用于 用于Windows的Docker桌面之外的生产环境。
因此,鉴于以上所述,我认为即使该建议是针对容器的,Docker守护程序本身也可能在相似的上下文中对docker cli命令起作用。
因此,首先,您需要在docker守护程序设置中将host.docker.internal:5000添加为不安全的注册表。在适用于Windows的Docker上,可以在“设置”>“守护程序”>“不安全的注册表”中找到它。不幸的是,这不算作localhost,因此必须这样做(Docker默认允许localhost不安全的注册表)。然后简单地:
docker tag {my image} host.docker.internal:5000/{my image}
docker push host.docker.internal:5000/{my image}
成功!
希望这对其他一些非常困惑的开发人员有所帮助。