Internal:
Container和Container之间访问通过Overlay网络(通过VIP虚拟IP)
在swarm的内部是有一个DNS的自动发现的功能
验证试验:
1,创建一个demo的网络
docker network create -d overlay demo
2,docker service create --name whoami -p 8000:8000 --network demo -d jwilder/whoami
#提供web服务,访问8000地址的话,返回hostname
3,docker service create --name client -d --network demo busybox sh -c "while true; do sleep 3600; done"
再次创建一个service连接上demo
通过docker service ps client
发现clinet 运行在node2上
进入node2节点
docker exec d8cc -it sh
ping whoami ->10.0.0.11
发现:
1,ping whoami 是可以的
2,10.0.0.11
通过docker service ps whoami
发现whoami运行在manager上
3,manager增加两个whoami节点
docker service ps whoami
发现在manager和node2上生成的节点
4,这时候我们再次返回node2节点上,
ping whoami ->10.0.0.11
发现还是可以ping,地址不变
其实,10.0.0.11就是虚拟的ip,简称VIP,他不属于任何节点
我们可以使用nslookup来查询DNS
我们依旧在node2的容器内部:
nslookup whoami
Server: 127.0.0.11
Address: 127.0.0.11:53
5,我们查看manager,node1,node2内部节点上ip
docker exec [id] ip a
10.0.0.11 不属于任何一个地址
6,继续返回node2节点的容器内部
执行:wget whoami ->03a295109ae3
执行:wget whoami ->5b2b7f0d72ce
由此发现,我每次访问的主机whoami都是不同的主机名
由此可以知道,我们每次的访问都分发到不同的主机
ping 03a295109ae3 node1
ping 5b2b7f0d72ce manager
这说明whoami后面有一个负载均衡LVS