
Ich habe das Problem einer sehr langsamen DNS-Auflösung im Docker-Container. Ein einfacher GET-Anruf an „google.com“ dauert etwa 4 Sekunden, während dieselbe Anfrage auf dem Host 0,052 ms dauert. Auch die Anfrage funktioniert einwandfrei, wenn ich sie an eine IP-Adresse sende, deshalb habe ich ein DNS-Problem vorgeschlagen. Ich habe nach einer Antwort gesucht, die meisten davon drehten sich um das Einrichten von DNS-Servern, was /etc/docker/daemon.json
ich getan habe, aber das hat mein Problem nicht gelöst. Der Server läuft auf Ubuntu 16.04. Ich habe auch einen Dev-Server, der dieselben Konfigurationen ausführt, aber einwandfrei funktioniert.
Gastgeber:
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
Container:
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
daemon.json:
{
"dns": ["188.93.16.19", "188.93.17.19", "8.8.8.8", "8.8.8.4"]
}
Antwort1
Das Problem wurde gelöst, indem alle DNS-Server außer 8.8.8.8 aus daemon.json entfernt wurden. Dies ist in meinem Fall der einzige Server, der die Domäne schnell auflöst. Habe verschiedene Server über getestet docker run --dns=<dns server> <image name> curl -g 'google.com'
.
Antwort2
Ich hatte dieses Problem bei der Verwendung von Docker-Compose. Es war auch ein DNS-Problem. Ich habe hinzugefügt:
services:
my_app:
dns:
- 8.8.8.8
- 4.4.4.4
Zu meiner docker-compose.yml und das Leistungsproblem wurde behoben.
Antwort3
Ich glaube, es hängt mit dem Problem der Bridge-MAC-Adresse zusammen, wie beschriebenHier. Sie müssen der Bridge eine Dummy-Schnittstelle mit niedriger MAC-Adresse als Slave hinzufügen