使用多个主机在Windows 10上运行Docker群集模式

我正在运行安装了最新更新的Windows 10。 我正在尝试使用多个在Windows主机上运行docker Linux容器的物理主机来设置swarm。 当我跑步

  docker swarm init --advertise-addr 10.154.26.150 --listen-addr 10.154.26.150:2377 

哪里

  10.154.26.150 

代表我当前机器的物理地址(未来swarm manager),我明显得到

 守护进程的错误响应:
经理停下了:
无法侦听远程API地址:listen tcp 10.154.26.150:2377 
绑定:不能分配请求的地址 

因为用于运行Linux容器的Windows的docker使用hyper-v虚拟机并且不知道任何关于我想要指定的地址。 所以这里是一个问题,如果在这种情况下运行群集模式的可能性很小,那么我的其他主机就可以通过物理networkingjoin新的群集。

如果您使用的是“Docker for Windows”,它在Hyper-V中运行Moby VM并模拟本地主机,那么单个节点Swarm安装就很容易。 它还没有devise成轻松join外部机器。

如果你想有一个3节点的swarm来展开你的testing,在那里他们都可以直接访问到彼此,那么我推荐使用docker-machine在运行boot2docker的Hyper-V中创build3个虚拟机,如下所示:

docker-machine create --driver hyperv --hyperv-virtual-switch "Primary Virtual Switch" node1 docker-machine create --driver hyperv --hyperv-virtual-switch "Primary Virtual Switch" node2 docker-machine create --driver hyperv --hyperv-virtual-switch "Primary Virtual Switch" node3 

注意:为此,请确保您处于PowerShellpipe理模式,以便docker-machine可以控制Hyper-V和2.您需要创build一个“外部”Hyper-V交换机,并使用其名称创build虚拟机

有关交换机设置的详细信息以及更改CPU和内存等其他选项均在docker-machine文档中 。

然后,您可以更改您的docker CLI,使用& docker-machine env nodeX | Invoke-Expression直接控制每个& docker-machine env nodeX | Invoke-Expression 使用docker-machine ssh nodeX & docker-machine env nodeX | Invoke-Expression和ssh。

我使用这个设置,它工作的很好!