本地专用Docker注册表将不响应

本地专用Docker注册表将不响应,docker,Docker,我花了相当多的时间试图让蜂群启动并运行。实际上,使用中提供的脚本运行它是轻而易举的事 但后来我遇到了一个问题,工人们的形象和主人不一样。似乎这不应该是一个问题,因为每个工作节点都是使用--registry mirror标志启动的 但当我试着调试时,我发现我似乎在某个地方有一些根本性的错误。所以,在处理swarm注册表更复杂的输入和输出之前,我需要能够运行一个基本的本地注册表,我在那里遇到了问题 Docker文档谈到了。因此,在Docker主机上完全没有运行任何其他内容的情况下,我按照该指南进行了

我花了相当多的时间试图让蜂群启动并运行。实际上,使用中提供的脚本运行它是轻而易举的事

但后来我遇到了一个问题,工人们的形象和主人不一样。似乎这不应该是一个问题,因为每个工作节点都是使用
--registry mirror
标志启动的

但当我试着调试时,我发现我似乎在某个地方有一些根本性的错误。所以,在处理swarm注册表更复杂的输入和输出之前,我需要能够运行一个基本的本地注册表,我在那里遇到了问题

Docker文档谈到了。因此,在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
现在我正在使用Docker for Mac(Docker版本17.03.1-ce,构建c6d412e),我已经在首选项中将
localhost:5000
配置为不安全的注册表(并重新启动)。所以我完全不明白为什么a)它会出现
192.168.21.146
?(那是我的子网,但不是我的主机地址)和b)它引用了
https

我认为DNS解析可能有问题,所以我检查了
/etc/hosts
,甚至在
节点中运行了这个脚本,只是为了再次检查:

$ node
> var x = require('dns').lookup("localhost", (err, ip) => console.log("IP = ", ip))
undefined
> IP =  127.0.0.1
因此,本地主机的解析不正确似乎不是问题。 如果我运行
curlhttp://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
现在我完全糊涂了。为什么
127.0.0.1
应该在
localhost
不工作的情况下工作

关于设置本地注册表并将其在群集中镜像到工作节点,我还有其他问题。但我认为,在我至少能够通过Docker文档之前,询问我在那里遇到的问题没有任何意义


是否有一些诊断我可以在这里运行(我还没有)来找出什么是错误配置的?!?如果您能帮助诊断,我们将不胜感激。谢谢。

所以在写了所有这些之后,我挖得更深了。我看到不知怎么的IP地址
192.168.21.146
突然出现了。考虑到Docker在网络方面所做的一切,我不能确定它是否以某种方式从我的网络中获取了IP。但事实证明,当我进入路由器找出哪台机器是
192.168.21.146
,我发现它不仅是一台电视,而且电视实际上是用主机名
localhost
在DNS中注册的

似乎Docker必须使用一种与我Mac上几乎所有其他程序不同的解析方法,这就是为什么我被迷住了。但是,我决定把这篇文章留在这里,因为有可能其他人(比如,拥有三星智能电视的人)也会遇到同样的问题


啊。

所以在写了所有这些之后,我挖得更深了。我看到不知怎么的IP地址
192.168.21.146
突然出现了。考虑到Docker在网络方面所做的一切,我不能确定它是否以某种方式从我的网络中获取了IP。但事实证明,当我进入路由器找出哪台机器是
192.168.21.146
,我发现它不仅是一台电视,而且电视实际上是用主机名
localhost
在DNS中注册的

似乎Docker必须使用一种与我Mac上几乎所有其他程序不同的解析方法,这就是为什么我被迷住了。但是,我决定把这篇文章留在这里,因为有可能其他人(比如,拥有三星智能电视的人)也会遇到同样的问题