问题描述
我在 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 解析再次正常工作。