【发布时间】:2020-05-02 23:25:40
【问题描述】:
我已经按照这篇文章https://docs.docker.com/ee/docker-ee/windows/docker-ee/在 Windows Server 2016 上手动设置了 docker
我有两台 windows server 2016 hyper-v 机器共享同一个网络,我添加了防火墙规则以允许彼此之间的网络连接。
第一台机器拥有私有IP 192.168.192.254,另一台拥有私有IP 192.168.192.242,它们可以互相ping通。
我尝试在第一台机器上初始化 swarm 并使用以下命令 docker swarm init --advertise-addr 192.168.192.245:2377 --listen-addr 192.168.192.245:2377 但我收到以下错误
*
来自守护程序的错误响应:管理器已停止:无法侦听 远程API地址:listen tcp 192.168.192.245:2377:bind: 请求的地址在其上下文中无效。
* 然后我执行了以下命令
docker network inspect nat
看起来 docker 有自己的接口,并且它的网络 IP 与 hyper-v 默认开关不同!这意味着两台机器上的两个docker都不知道如何相互通信,如果我的理解是正确的,我该如何构建多节点集群?
我尝试做但失败的另一件事是初始化群并使用 docker 窗口范围内的 IP 地址,但我遇到了同样的问题
再次编辑:
现在它使用这个 IP:Port 192.168.192.243:2377 并且能够将第一个 hyper-v 虚拟机添加为管理器节点,但正如您所看到的其他机器无法加入集群。我注意到当我添加 --listen-addr 192.168.192.243:2377 时,我得到了与上面相同的错误。
我还禁用了两台机器上的防火墙,但没有任何效果
【问题讨论】:
-
如果主机的IP地址为
192.168.192.242,那么init命令不是docker swarm init --advertise-addr 192.168.192.242吗?为什么要尝试广告/绑定到其他 IP 地址(如*.243或*.245)? -
你是男人,很有魅力,请添加这个作为答案,我认为我可以使用网络子网中的任何 IP 地址,我不能将我的 docker 引擎附加到任何子网中的IP?也许我误解了这个概念。无论如何,非常感谢。
-
另一件事,为什么advertise-addr 接受子网中的任何IP 而listen-addr 不接受
标签: docker windows-server-2016 swarm docker-network