DNS 问题:dig 成功,ping 失败Docker 容器

问题描述

我在 Docker 容器中运行一个 Java 应用程序,它试图从 DHL 跟踪 URL https://ecommerceportal.dhl.com/track/

中抓取一些内容

这一直工作正常,但几天前,它因 UnknownHostException 而停止工作。

从 Docker 容器内部,我无法 ping 主机:

root@4f0f68ab1e9f:/# ping ecommerceportal.dhl.com
ping: ecommerceportal.dhl.com: Name or service not known

但是通过 dig 的 DNS 查询是成功的:

root@4f0f68ab1e9f:/# dig ecommerceportal.dhl.com

; <<>> DiG 9.10.3-P4-Debian <<>> ecommerceportal.dhl.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY,status: NOERROR,id: 7092
;; flags: qr rd ra; QUERY: 1,ANSWER: 3,AUTHORITY: 0,ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0,flags:; udp: 512
;; QUESTION SECTION:
;ecommerceportal.dhl.com.       IN      A

;; ANSWER SECTION:
ecommerceportal.dhl.com. 21171  IN      CNAME   ecommerceportal.dhl.com.edgekey.net.
ecommerceportal.dhl.com.edgekey.net. 299 IN CNAME e16593.a.akamaiedge.net.
e16593.a.akamaiedge.net. 19     IN      A       184.24.26.220

;; Query time: 25 msec
;; SERVER: 127.0.0.11#53(127.0.0.11)
;; WHEN: Wed Feb 10 12:34:13 UTC 2021
;; MSG SIZE  rcvd: 151

当然,对 IP 184.24.26.220 的 ping 工作正常。

此外,ping 其他主机的效果很好,因此容器可以访问互联网。

有人知道出了什么问题吗? 我也尝试在容器的 docker-compose 文件中替换 DNS 服务器,但没有成功。

谢谢和 BR, 扬

解决方法

感谢@Patrick 的提示。通过尝试使用 host,我发现问题出在路由器中的 DNS 服务器上。重新启动后,DNS 解析再次正常工作。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...