我可以使用以下命令列出 docker 覆盖网络内的所有容器 IP 地址:
~# docker network inspect <network_id>
我正在尝试对某些 Docker 群集堆栈中的解析器进行故障排除。似乎解析到了错误的 IP 地址,但我想先检查它是否解析为 VIP。我说的是容器之间的网络,而不是入口网络。
在我的探索中我发现了这个Docker 问题评论.这表明:
从调试的角度来看,要使用的工具是:
- tcpdump
- 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