容器内nslookup无法解析其他容器DNS但wget可用的问题
Docker容器中wget能访问容器名但nslookup查询失败的原因解析
核心差异原因
Docker嵌入式DNS服务器(容器内的127.0.0.11)仅支持处理A/AAAA类型的DNS记录查询,不同工具的默认查询类型导致了结果差异:
- wget:解析域名时直接请求A记录(IPv4地址记录),Docker DNS可正常返回目标容器的IP,因此访问成功。
- nslookup(busybox版本):默认发起ANY类型的查询(请求所有记录类型),而Docker嵌入式DNS不支持ANY记录的响应,因此返回"No answer"。
验证方法
在busybox容器内指定查询A记录,即可获取正确结果:
nslookup -type=A web
执行后会得到类似如下的正确响应:
Server: 127.0.0.11 Address: 127.0.0.11:53 Non-authoritative answer: Name: web Address: 172.18.0.2
补充说明
busybox自带的nslookup工具行为与常规Linux发行版中bind-utils包的nslookup不同,后者默认查询A记录,不会出现此问题。
内容的提问来源于stack exchange,提问作者呂學洲
相关产品推荐
相关产品推荐

