繁体   English   中英

本地私有Docker注册中心将不响应

[英]Local private Docker registry will not respond

我花了很多时间尝试建立并运行。 实际上,使用本文提供的脚本轻松运行它。

但是后来我遇到了一个问题,就是工人的图像与主人的图像不同。 似乎这不应该成为问题,因为每个工作程序节点都是通过--registry-mirror标志启动的。

但是,当我尝试调试时,发现某个地方似乎根本存在错误。 因此,在处理群体注册表的更为复杂的内容之前,我需要能够仅运行基本的本地注册表,并且在那里遇到了问题。

Docker文档讨论了在localhost上运行您自己的注册表 因此,在我的Docker主机上完全没有其他东西运行并且遵循该指南的情况下,我做到了:

$ docker run -d -p 5000:5000 --restart=always --name registry registry:2

运行docker ps显示它启动正常。 抓住最新的ubuntu映像也可以正常工作:

$ docker pull ubuntu && docker tag ubuntu localhost:5000/ubuntu

但是下一步是问题所在:

$ docker push localhost:5000/ubuntu
The push refers to a repository [localhost:5000/ubuntu]
Get https://localhost:5000/v1/_ping: dial tcp 192.168.21.146:5000: i/o timeout

现在,我正在使用Mac的Docker(Docker版本17.03.1-ce,内部版本c6d412e),并且已将localhost:5000配置为首选项中的不安全注册表(并重新启动)。 所以我绝对困惑为什么a)它会启动192.168.21.146 (这是我的子网,而不是我的主机的地址),并且b)它引用https

我以为DNS解析可能有问题,所以我检查了/etc/hosts ,甚至在node运行了该脚本只是为了仔细检查:

$ node
> var x = require('dns').lookup("localhost", (err, ip) => console.log("IP = ", ip))
undefined
> IP =  127.0.0.1

因此,如果本地主机的解析不正确,这似乎不是问题。 如果我运行curl http://localhost:5000/v2/_catalog ,我会得到一个空的注册表,这一点进一步证实了这一点,正如我期望的那样。 那么,为什么推送失败? 但是,如果我这样做:

$ docker pull ubuntu && docker tag ubuntu 127.0.0.1:5000/ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
Digest: sha256:f3a61450ae43896c4332bda5e78b453f4a93179045f20c8181043b26b5e79028
Status: Image is up to date for ubuntu:latest

$ docker push 127.0.0.1:5000/ubuntu
The push refers to a repository [127.0.0.1:5000/ubuntu]
73e5d2de6e3e: Pushed
08f405d988e4: Pushed
511ddc11cf68: Pushed
a1a54d352248: Pushed
9d3227c1793b: Pushed
latest: digest: sha256:f3a61450ae43896c4332bda5e78b453f4a93179045f20c8181043b26b5e79028 size: 1357

现在我很困惑。 为什么在localhost不工作时127.0.0.1应该工作?

关于设置本地注册表并将其镜像到工作节点中,还有其他问题。 但是,我至少在通过Docker文档中的4个基本步骤之前,问我遇到的问题没有任何意义。

是否可以在这里(尚未安装)运行某些诊断程序以找出配置错误的内容?! 诊断方面的任何帮助将不胜感激。 谢谢。

因此,在写完所有这些内容之后,我会更深入地研究。 我看到以某种方式弹出IP地址192.168.21.146 有了Docker与网络相关的所有功能,我不能确定它不是从我的网络中获取IP。 但是事实证明,当我进入路由器以找出什么机器是192.168.21.146 ,我不仅发现它是一台电视,而且该电视实际上已经在主机名localhost !!!中注册了自己!

似乎Docker必须使用与Mac上几乎所有其他程序不同的解析方法,这就是为什么我不喜欢这种气味。 但是,我决定保留此职位,因为其他人(例如,拥有三星智能电视)可能会遇到同样的问题。

啊。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM