Docker服务在`n-1`群集节点中创build`n`副本

我在Docker群中有4个节点。 我用5个副本创build了官方docker nginx镜像的服务。 如果我使用端口映射80:80,则只能公开访问4个容器; 另一个是不可访问的。

docker service create --name web -p 80:80 --replicas 5 nginx 

有没有办法,我可以公开所有5个nginx运行容器? (两个容器在同一个节点中,只有一个可以绑定到节点的端口80)

如果您创build了n副本的服务,他们都会参与服务的负载平衡。 如果一个节点有多个服务实例正在运行,当主机在端口80上获得请求时,Docker将在该主机上的容器之间分配stream量。

用4个节点上的5个副本,如果抛出一些testingstream量并检查响应,则应该看到所有五个容器都在响应。 但是使用默认的nginx图像很难检查。 这个问题的答案使用一个替代图像作为一个简单的来validation所有的容器正在响应stream量。

据我所知,除非至less有一台服务器有多个公用LAN卡/虚拟networking连接,否则这是不可能的。 不知道为什么你会想要每个节点运行多个nginx实例。