Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
docker swarm如何使用dns获取所有容器ip?_Dns_Docker Swarm_Swarm - Fatal编程技术网

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

docker swarm如何使用dns获取所有容器ip?,dns,docker-swarm,swarm,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地址?您可以使用docker inspect获取服务的虚拟IP: NETWORK_ID=$(docker network ls -q --no-trunc --filter n

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

我想从dns获取所有容器ip

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

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

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

使用
任务。
获取属于特定服务的所有容器。

使用
任务。
获取属于特定服务的所有容器。

您是否能够确定如何从容器中列出服务?您是否能够确定如何从容器中列出服务?