Docker Swarm中的容器和节点IP地址

Docker Swarm中的容器和节点IP地址,docker,docker-swarm,Docker,Docker Swarm,我正在阅读Docker教程,我有点困惑,为什么容器的IP地址可能与群中包含它们的节点的IP地址不同。我的困惑是基于下图,在教程中 较大的绿色框是群中的节点;他们每个人都有自己的IP和负载均衡器,外部监听端口为8080。我相信黄色框是myweb服务中的容器/任务。他们正在监听端口80,我猜服务设置为将端口80从每个容器映射到外部端口8080 我或多或少了解这一点,但我不明白为什么容器/任务会有/需要一个与其运行的节点不同的IP地址。有人能解释一下吗 如果我不得不猜测,那是因为每个容器基本上都是一

我正在阅读Docker教程,我有点困惑,为什么容器的IP地址可能与群中包含它们的节点的IP地址不同。我的困惑是基于下图,在教程中

较大的绿色框是群中的节点;他们每个人都有自己的IP和负载均衡器,外部监听端口为8080。我相信黄色框是
myweb
服务中的容器/任务。他们正在监听端口80,我猜服务设置为将端口80从每个容器映射到外部端口8080

我或多或少了解这一点,但我不明白为什么容器/任务会有/需要一个与其运行的节点不同的IP地址。有人能解释一下吗


如果我不得不猜测,那是因为每个容器基本上都是一个VM,VM需要自己的IP地址,并且没有两个VM可以具有相同的IP地址,因此容器不能具有与节点相同的IP。但我不确定这个解释是否正确。

我自己对docker/containers还是相当陌生,但据我所知,您指的是内部IP和外部IP。也就是说,
192.168.99.100-102
可以外部寻址(也称为公开可用),而
10.0.0.1-2
地址仅用于内部寻址


内部寻址的原因是,您可以为容器使用更大的ip地址池,这就是使用
10.0.0.0/8
地址空间的原因。这些节点仍然需要可寻址,以便负载平衡器能够正确分配负载。根据维基百科条目,如果你需要的话,你的swarm可以扩展到很多容器。然而,您只有有限数量的外部IP地址供您的服务使用。

这似乎是合理的。至少现在可以接受。谢谢