我在群集模式下使用docker 1.12.1。
当我运行以下命令时:
docker network create --driver overlay --subnet 10.0.9.0/24 --opt encrypted services
然后
docker service create --name nginx nginx
在正在运行的容器中执行命令ip address
(在正确的节点上),结果是
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
234: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1424 qdisc noqueue state UP group default
link/ether 02:42:0a:00:09:03 brd ff:ff:ff:ff:ff:ff
inet 10.0.9.3/24 scope global eth0
valid_lft forever preferred_lft forever
inet 10.0.9.2/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:aff:fe00:903/64 scope link
valid_lft forever preferred_lft forever
236: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.3/16 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe12:3/64 scope link
valid_lft forever preferred_lft forever
可以请任何人解释一下,为什么eth0在这种情况下有两个IP地址10.0.9.3/24
和10.0.9.2/32
?
这会导致问题,因为当我运行更多实例时,会有重叠的地址会破坏我正在运行的服务。
答案 0 :(得分:1)
一个是VIP,用于服务。
另一个是节点地址,仅供内部使用。从APP的角度来看,他们应该使用服务IP。