【问题标题】:docker swarm how to get all container ip using dns?docker swarm 如何使用 dns 获取所有容器 ip?
【发布时间】:2018-05-23 14:37:19
【问题描述】:
我创建了两个服务,service-a(3 个回复)和service-b(5 个回复)。
他们在micro覆盖网络中。
我想从 dns 中获取所有容器 ip。
# docker run --rm --network micro alpine nslookup service-a
但只能获得一个 ip。有没有办法使用 dns 获取某些服务的所有 IP 地址?
【问题讨论】:
标签:
dns
docker-swarm
swarm
【解决方案1】:
使用tasks.<service-name> 获取属于特定服务的所有容器。
【解决方案2】:
您可以使用docker inspect获取服务的虚拟IP:
NETWORK_ID=$(docker network ls -q --no-trunc --filter name=micro) && docker service inspect service-a -f "{{range \$i, \$value := .Endpoint.VirtualIPs}} {{if eq \$value.NetworkID \"$NETWORK_ID\" }}{{$value.Addr}}{{end}}{{end}}"
这一行命令查找网络 ID,然后在 docker inspect 中使用它,以仅获取此网络中的服务虚拟 IP,使用 -f(格式)参数