我正在尝试在ubuntu linux docker上调试容器dns解决问题。如此处所述https://docs.docker.com/config/containers/container-networking/#dns-services docker使用容器内的嵌入式DNS服务器。是否有列出Docker嵌入式DNS服务器条目的命令? (例如/etc/resolv.conf
中的条目)
我尝试了docker inspect
和docker network inspect
。
还尝试以 Debug模式启动dockerd
,但未发现任何有用的方法。
它确实显示了一些配置文件,如下所示。
INFO[2020-07-13T14:39:58.517777580+05:45] detected 127.0.0.53 nameserver, assuming systemd-resolved, so using resolv.conf: /run/systemd/resolve/resolv.conf
但是我想列出dns地址dockerd
的127.0.0.11
网络的运行时dns条目。可能吗 ?
最佳答案
可能,但是您必须解析docker network inspect
打印的JSON。
运行docker network ls
以获取正在运行的网络名称,然后运行docker network inspect NETWORK_NAME
以查看其中的容器。
在JSON中查找“Containers”关键字,它是已连接设备的列表。查找带有"IPv4Address": "127.0.0.11/24"
条目的实例,“名称”键是DNS名称。
IE。 countly_countly-endpoint
是解析为ip 10.0.8.4/24
的DNS名称:
"lb-countly_countly": {
"Name": "countly_countly-endpoint",
"EndpointID": "9f7abf354b5fbeed0be6483b53516641f6c6bbd37ab991544423f5aeb8bdb771",
"MacAddress": "02:42:0a:00:08:04",
"IPv4Address": "10.0.8.4/24",
"IPv6Address": ""
}
请注意,countly_
是与docker network ls
中的网络名称匹配的网络 namespace ,这样,您可以确保它们是唯一的,并根据NETWORK-NAME_SERVICE-NAME
的规则将服务配置为使用DNS名称相互通信。
关于docker - Docker网络显示DNS条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62872963/