我正在阅读Docker教程,我有点困惑为什么容器可能具有与群集中包含它们的节点不同的IP地址.我的困惑是基于下图,该图来自本教程的this page.
较大的绿色框是群中的节点.他们每个人都有自己的IP和负载平衡器,并且在外部,它们正在端口8080侦听.我相信,黄色框是my-web服务中的容器/任务.他们正在侦听端口80,我想该服务已设置为将端口80从每个容器映射到外部的端口8080.
我或多或少地了解了这么多,但是我不明白为什么容器/任务与正在运行的节点需要一个不同的IP地址.有人可以解释吗?
如果我不得不猜测,那是因为每个容器基本上都是一个VM,并且VM需要它们自己的IP地址,并且两个VM不能具有相同的IP地址,因此该容器不能具有与节点相同的IP.但我不确定该解释是否正确.
最佳答案
我对docker / containers还是很陌生,但是据我了解,您指的是内部IP和外部IP.即192.168.99.100-102是外部可寻址的(aka公开可用),而10.0.0.1-2地址仅用于内部寻址.
内部寻址的原因是,您可以为容器使用更大的IP地址池,这就是为什么要使用10.0.0.0/8地址空间的原因.这些节点仍然需要可寻址,以便您的负载均衡器可以正确分配负载.并且根据Wikipedia条目,you’ve got 16,777,216
available IPs可让您的集群根据需要扩展到许多容器.而您只有有限数量的外部IP地址可供使用.