Domain-Name-System
Fedora 34 - 無法解析 docker 容器內的任何名稱
我在 Fedora 34(= 主機系統)上,我的 docker 容器中有問題,無法解析任何域。在主機解析度上沒有問題。
這是我嘗試過的:
- 重啟並重新安裝docker
- 禁用防火牆
- 重啟機器
- 重啟dns
- 不同的碼頭工人圖像
- 在 docker 中明確設置 dns(見下文)
- 在 docker 中使用網路模式(見下文)
- 禁用 ipv6
但是,我無法在任何容器中解析名稱:
~ docker run busybox nslookup google.com Server: 8.8.8.8 Address: 8.8.8.8:53 Non-authoritative answer: Name: google.com Address: 142.251.36.174 *** Can't find google.com: No answer
如上所述,它適用於主機:
~ nslookup google.com Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: google.com Address: 142.251.36.206 Name: google.com Address: 2a00:1450:4016:809::200e
奇怪的是,即使使用主機網路執行或顯式設置 dns 也無濟於事:
嘗試使用主機 dns 進行設置(這裡甚至說超時……)
~ docker run --dns 127.0.0.53 busybox nslookup google.com ;; connection timed out; no servers could be reached
用Google dns 試過:
~ docker run --dns 8.8.8.8 busybox nslookup google.com Server: 8.8.8.8 Address: 8.8.8.8:53 Non-authoritative answer: Name: google.com Address: 142.251.36.238 *** Can't find google.com: No answer
嘗試使用主機網路:
~ docker run --network="host" busybox nslookup google.com Server: 8.8.8.8 Address: 8.8.8.8:53 Non-authoritative answer: Name: google.com Address: 142.251.36.238 *** Can't find google.com: No answer
我沒有想法了..任何人都有提示,這裡發生了什麼?
附加資訊:它曾經可以工作,據我所知,我沒有更改系統上的任何內容,這可能會對此產生影響。
您可以嘗試使用指定的 DNS 伺服器執行 nslookup 命令嗎?如:
nslookup google.com 8.8.8.8
,或在您的情況下:docker run busybox nslookup google.com 8.8.8.8
。這將幫助我們消除 Docker 橋中可能出現的網路問題。
但是您得到了答案,後面的 2 行
Non-authoritative answer:
是結果(142.251.36.238 是 Google 的有效 IP 地址)。從外觀上看,您沒有得到的是 IPv6 答案。
你可以執行:
docker run busybox nslookup -type=A google.com
它應該只返回沒有錯誤的 IP 地址。
我懷疑busybox中nslookup的預設行為可能已經改變為返回IPv4和IPv6地址,這就是為什麼這看起來已經改變了。