【问题标题】: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(格式)参数

    【讨论】:

      猜你喜欢
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多