docker swarm如何使用dns获取所有容器ip?

时间:2018-05-23 14:37:19

标签: dns docker-swarm swarm

我创建了两个服务,service-a(3个回复)和service-b(5个回复)。 它们位于micro覆盖网络中。

我想从dns获取所有容器ip。

# docker run --rm --network micro alpine nslookup service-a

但只能获得一个ip。是否有使用dns获取某些服务的所有IP地址?

2 个答案:

答案 0 :(得分:0)

您可以使用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中使用它来使用-f(格式)参数

获取此网络中的服务虚拟IP

答案 1 :(得分:0)

使用 tasks.<service-name> 获取属于特定服务的所有容器。