docker 容器內 DNS 解析緩慢

docker 容器內 DNS 解析緩慢

我一直遇到 docker 容器內 DNS 解析速度非常慢的問題。對「google.com」的簡單 GET 大約需要 4 秒鐘才能完成,而主機上的相同請求則需要 0.052 毫秒。如果我將請求發送到 IP 位址,請求也會完美運行,這就是我建議 DNS 問題的原因。我搜尋了一個答案,其中大多數是關於設定 dns 伺服器的,/etc/docker/daemon.json 我這樣做了,但這對我的問題沒有幫助。伺服器運行在 Ubuntu 16.04 上。我還有一個運行相同配置的開發伺服器,但運行良好。

主持人:

time curl -g 'google.com'

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

real    0m0.052s
user    0m0.004s
sys 0m0.004s

time nslookup google.com

Server:     188.93.16.19
Address:    188.93.16.19#53

Non-authoritative answer:
Name:   google.com
Address: 173.194.73.102
Name:   google.com
Address: 173.194.73.139
Name:   google.com
Address: 173.194.73.100
Name:   google.com
Address: 173.194.73.113
Name:   google.com
Address: 173.194.73.138
Name:   google.com
Address: 173.194.73.101


real    0m0.013s
user    0m0.004s
sys 0m0.004s

容器:

time curl -g https://google.com

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>

real    0m4.592s
user    0m0.004s
sys 0m0.012s

time nslookup google.com

Server:     127.0.0.11
Address:    127.0.0.11#53

Non-authoritative answer:
Name:   google.com
Address: 64.233.165.139
Name:   google.com
Address: 64.233.165.101
Name:   google.com
Address: 64.233.165.102
Name:   google.com
Address: 64.233.165.113
Name:   google.com
Address: 64.233.165.100
Name:   google.com
Address: 64.233.165.138


real    0m4.029s
user    0m0.008s
sys 0m0.004s

守護程式.json

{
    "dns": ["188.93.16.19", "188.93.17.19", "8.8.8.8", "8.8.8.4"]
}

答案1

透過從 daemon.json 中刪除除 8.8.8.8 之外的所有 DNS 伺服器解決了該問題。就我而言,這是唯一一台可以快速解析網域的伺服器。透過測試不同的伺服器docker run --dns=<dns server> <image name> curl -g 'google.com'

答案2

我在使用 docker-compose 時遇到了這個問題。這也是一個dns問題。我補充道:

services: 
  my_app:
    dns:
      - 8.8.8.8
      - 4.4.4.4

到我的 docker-compose.yml 並修復了性能問題。

答案3

我認為這與概述的網橋 MAC 位址問題有關這裡。您必須新增一個具有低 MAC 位址的虛擬介面作為橋接器的從屬介面

相關內容