如何在docker swarm中运行注册表?
在具有2个节点的docker swarm模式下,如果我这样做:如何在docker swarm中运行注册表?,docker,docker-swarm,Docker,Docker Swarm,在具有2个节点的docker swarm模式下,如果我这样做: node1master# docker service create --name registry --publish 5000:5000 registry:2 然后,我无法通过执行以下操作访问注册表: node1master# telnet localhost 5000 Trying ::1... Trying 127.0.0.1... telnet: Unable to connect to remote host: Con
node1master# docker service create --name registry --publish 5000:5000 registry:2
然后,我无法通过执行以下操作访问注册表:
node1master# telnet localhost 5000
Trying ::1...
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
因为注册表现在正在node2worker上运行:
node2worker# telnet localhost 5000
Trying ::1...
Connected to localhost.
Escape character is '^]'.
(当然可以在node1master
上进行调度,但在本例中并非如此)
我不明白的是为什么注册表没有连接到ingres
网络
我认为有意义的是,只要docker本身通过ingress网络路由对localhost:5000
的请求,就可以将注册表连接到ingress
网络
注册表应该如何运行,以便在所有节点上都可以使用
localhost:5000
(我猜是使用入口网络),或者作为docker守护进程的某个固定DNS名称使用。Hm,我想上次我试过了,这是可行的,但我应该检查一下(现在不是在计算机上)。让我添加一个大警告,这个技巧在测试设置中很好,但是运行它会使注册表在Swarm中的每个节点上都可以公开访问,而无需访问控制,因此任何人都可以访问您的图像,并推送/覆盖您的图像(默认情况下,注册表图像没有访问控制)@thaJeztah所以我的问题可能也与我的另一个问题有关:,但是考虑到安全问题,docker本身是否会看到一个网络,但这不是注册中心可以驻留的可公开访问的接收网络?嗯,我想上次我试过了,这是可行的,但我应该检查一下(现在不是在计算机上)。让我添加一个大警告,这个技巧在测试设置中很好,但是运行它会使注册表在Swarm中的每个节点上都可以公开访问,而无需访问控制,因此任何人都可以访问您的图像,并推送/覆盖您的图像(默认情况下,注册表图像没有访问控制)@thaJeztah所以我的问题可能也与我的另一个问题有关:,但是考虑到安全问题,docker本身是否会看到一个网络,但这不是注册中心可以驻留的可公开访问的接收网络?