通过关注本文https://docs.docker.com/ee/docker-ee/windows/docker-ee/,我已在Windows Server 2016上手动设置了泊坞窗
我有两台共享同一网络的Windows Server 2016 hyper-v机器,我添加了防火墙规则,以允许彼此形成网络连接。
第一台机器拥有私有IP 192.168.192.254,另一台机器拥有私有IP 192.168.192.242,它们可以相互ping通。
我尝试在第一台计算机上初始化群集,并使用以下命令docker swarm init --advertise-addr 192.168.192.245:2377 --listen-addr 192.168.192.245:2377
,但出现以下错误*
来自守护程序的错误响应:管理器已停止:无法监听远程API地址:监听tcp 192.168.192.245:2377:绑定:请求的地址在其上下文中无效。
*我执行了以下命令,然后
docker network inspect nat
好像docker有其自己的接口,并且其网络IP与hyper-v默认开关不同!这意味着两台机器上的两个泊坞窗都不知道如何相互通信,如果我的理解正确,那么在这种情况下如何构建多节点集群?
我尝试做并失败的另一件事是初始化群集并在docker窗口范围内使用了IP地址,但是我遇到了同样的问题
再次编辑:
现在,它可以使用此IP:Port 192.168.192.243:2377并能够将第一个Hyper-v VM添加为管理器节点,但是如您所见,另一台计算机无法加入一群。我注意到,当我添加--listen-addr 192.168.192.243:2377时,会出现与上面相同的错误。
我也在两台计算机上都禁用了防火墙,但是什么也没用
您需要使用主机的IP地址之一作为listen-addr
,因为顾名思义,它将尝试监听该IP地址。
还有advertise-addr
,这也是到其他节点的网络地址广告(它们将使用该地址连接到群集)。
[在大多数设置中,两者将是相同的,但是在某些情况下它们是不同的(例如,具有multiple network cards
的主机可能只希望群在single network
中可访问,或者通过VPN
互连的主机可能希望它们只能通过VPN interface
进行通信)。从理论上讲,您可以在NAT
接口后有一个群集管理器,在这种情况下,advertise-addr将是NAT设备的(我只是在推测NAT的情况-我没有尝试过)。
无论如何,在您的情况下都可以使用此初始化命令:docker swarm init --advertise-addr 192.168.192.242