如何列出 Docker VIP 地址?

如何列出 Docker VIP 地址?

我可以使用以下命令列出 docker 覆盖网络内的所有容器 IP 地址:

~# docker network inspect <network_id>

我正在尝试对某些 Docker 群集堆栈中的解析器进行故障排除。似乎解析到了错误的 IP 地址,但我想先检查它是否解析为 VIP。我说的是容器之间的网络,而不是入口网络。

在我的探索中我发现了这个Docker 问题评论.这表明:

从调试的角度来看,要使用的工具是:

  1. tcpdump
  2. ipvsadm --> 负载均衡器由 ipvs 完成

但是我找不到ipvsadm使用哪些选项来打印我的docker网络内使用的VIP。

答案1

您可以通过检查服务本身来查找服务的 VIP(我通常用它jq来格式化 json 输出):

docker service inspect --format '{{json .Endpoint.VirtualIPs}}' ${service_name} \
 | jq .

要循环遍历所有服务,您可以编写一些脚本:

for service in $(docker service ls -q); do
  docker service inspect --format \
     '{{.Spec.Name}}: {{range .Endpoint.VirtualIPs}}{{.Addr}} {{end}}' \
     ${service}
done

相关内容