gpt4 book ai didi

docker - Windows容器是否支持多节点Swarm

转载 作者:行者123 更新时间:2023-12-02 18:05:38 25 4
gpt4 key购买 nike

我按照这篇文章在 Windows Server 2016 上手动设置了 docker https://docs.docker.com/ee/docker-ee/windows/docker-ee/

我有两台 Windows Server 2016 hyper-v 机器共享同一个网络,我添加了防火墙规则以允许网络连接从一个到另一个。

第一台机器拥有私有(private)IP 192.168.192.254,另一台拥有私有(private)IP 192.168.192.242,他们可以互相ping通。

我尝试在第一台机器上初始化 swarm 并使用了下面的命令出现以下错误*

Error response from daemon: manager stopped: failed to listen on remote API address: listen tcp 192.168.192.245:2377: bind: The requested address is not valid in its context.

*然后我执行了下面的命令

docker network inspect nat

下面是结果 enter image description here

看起来 docker 有自己的接口(interface),它的网络 IP 与 hyper-v 默认开关不同!这意味着两台机器上的两个 docker 都不知道如何相互通信,如果我的理解是正确的,我该如何在这种情况下构建多节点群?

我尝试做但失败的另一件事是初始化 swarm 并使用 docker 窗口范围内的 IP 地址,但我遇到了同样的问题 enter image description here

再次编辑:

现在它可以使用此 IP:Port 192.168.192.243:2377 并且能够将第一个 hyper-v VM 添加为管理器节点,但如您所见其他机器不能加入群。我注意到,当我添加 --listen-addr 192.168.192.243:2377 时,我得到了与上面相同的错误。

我还禁用了两台机器上的防火墙,但没有任何效果

enter image description here

最佳答案

您需要为 listen-addr 使用主机的 IP 地址之一,因为顾名思义它将尝试监听该 IP 地址。

advertise-addr 以及这是向其他节点通告 的网络地址(它们将使用该地址连接到 swarm)。

在大多数设置中,两者是相同的,但在某些情况下它们是不同的(例如,具有多个网卡的主机可能只希望在单个网络,或者通过 VPN 互连的主机可能希望 swarm 仅通过 VPN 接口(interface) 进行通信。
理论上你可以在 NAT 接口(interface)后面有一个 swarm manager,在这种情况下,advertise-addr 将是 NAT 设备的地址(我只是推测 NAT 的情况 - 我没有试过这个)。

无论如何,使用此初始化命令应该适用于您的情况:
docker swarm init --advertise-addr 192.168.192.242

关于docker - Windows容器是否支持多节点Swarm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61567659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com