为什么 docker 堆栈创建的容器有 3 个 IP 地址,并且它们与服务内部的不同 检查



>我使用 docker 堆栈部署在 2 个节点上创建了 3 个服务

我查看了一个服务,首先在容器内

它有3个不同子网的IP地址

ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:0a:00:02:05
inet addr:10.0.2.5  Bcast:0.0.0.0  Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1
RX packets:141427 errors:0 dropped:0 overruns:0 frame:0
TX packets:90456 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:16495496 (15.7 MiB)  TX bytes:62287111 (59.4 MiB)
eth1      Link encap:Ethernet  HWaddr 02:42:ac:13:00:03
inet addr:172.19.0.3  Bcast:0.0.0.0  Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:355 (355.0 B)  TX bytes:230 (230.0 B)
eth2      Link encap:Ethernet  HWaddr 02:42:0a:ff:00:07
inet addr:10.255.0.7  Bcast:0.0.0.0  Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1
RX packets:253 errors:0 dropped:0 overruns:0 frame:0
TX packets:233 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:16484 (16.0 KiB)  TX bytes:17135 (16.7 KiB)
lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
UP LOOPBACK RUNNING  MTU:65536  Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:1050 (1.0 KiB)  TX bytes:1050 (1.0 KiB)

但它们都与我从 docker Service Inspection 获得的不同

"VirtualIPs": [
{
"NetworkID": "u0n4343zozic7awn0985441pd",
"Addr": "10.255.0.6/16"
},
{
"NetworkID": "mi1l10o7ysnv5jipp8c9wyrvr",
"Addr": "10.0.2.4/24"
}
]

所以我的问题是为什么容器有 3 个 IP,它们做什么? 还有虚拟IP代表什么?它们的用途是什么?

好的,我想您在堆栈中还配置了一个覆盖网络?那么它将是以下内容:

eth0:是覆盖网络上的容器 IP 地址 - 这是因为为您的服务创建的 Docker 网络也将具有 CIDR 掩码。您可以通过针对服务任务的 nslookup 解析容器:"nslookup 任务"。

eth1:是来自 docker 引擎的 docker 主机的 iptables 链接 IP 地址。

eth2:我的猜测是,例如,这个来自Weave网络 - 您是否曾经安装过另一个像Weave这样的第三方覆盖网络?如果是,请将其删除,例如运行weave reset

对于虚拟IP:如果您启动包含覆盖网络的堆栈服务,您的服务将收到一个虚拟IP地址 - 我想也是编织。阅读更多内容,请访问 https://success.docker.com/Architecture/Docker_Reference_Architecture%3A_Designing_Scalable%2C_Portable_Docker_Container_Networks

从链接的 Docker 页面:

myservice 解析为该服务的虚拟 IP (VIP(,即 内部负载平衡到各个任务 IP 地址。 容器名称也可以解析,尽管直接解析为其 IP 地址。

因此,您可以 nslookup 并将获得虚拟 ip。一般,这是一个高级主题,您必须在其中阅读很多有关它的信息。

相关内容

  • 没有找到相关文章

最新更新