【发布时间】:2021-02-10 12:41:46
【问题描述】:
我在 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, 一月
【问题讨论】:
-
ping几乎从来都不是一个正确的故障排除工具,但它使用操作系统功能来解析名称,即/etc/nsswitch.conf中的内容来找出用于解析名称的来源。对面的dig只做 DNS 查询。
标签: docker dns ping dig unknown-host