Uncommenting DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
in /etc/default/docker
als Matt Träger vorgeschlagen hat nicht für mich arbeiten. Auch die DNS-Server meines Unternehmens wurden nicht in diese Datei aufgenommen. Aber es gibt noch einen anderen Weg (lesen Sie weiter).
Lassen Sie uns zunächst das Problem überprüfen:
$ docker run --rm busybox nslookup google.com # takes a long time
nslookup: can't resolve 'google.com' # <--- appears after a long time
Server: 8.8.8.8
Address 1: 8.8.8.8
Wenn der Befehl zu hängen scheint, aber schließlich den Fehler "google.com kann nicht behoben werden" ausspuckt, haben Sie das gleiche Problem wie ich.
Der nslookup
Befehl fragt den DNS-Server 8.8.8.8 ab, um die Textadresse von 'google.com' in eine IP-Adresse umzuwandeln. Ironischerweise ist 8.8.8.8 der öffentliche DNS-Server von Google . Wenn dies nslookup
fehlschlägt, werden öffentliche DNS-Server wie 8.8.8.8 möglicherweise von Ihrem Unternehmen blockiert (was aus Sicherheitsgründen angenommen wird).
Sie würden denken, dass das Hinzufügen von DNS-Servern Ihres Unternehmens zu DOCKER_OPTS
in /etc/default/docker
den Trick machen sollte, aber aus irgendeinem Grund hat es bei mir nicht funktioniert. Ich beschreibe unten, was für mich funktioniert hat.
LÖSUNG :
Ermitteln Sie auf dem Host (ich verwende Ubuntu 16.04) die primären und sekundären DNS-Serveradressen:
$ nmcli dev show | grep 'IP4.DNS'
IP4.DNS[1]: 10.0.0.2
IP4.DNS[2]: 10.0.0.3
Erstellen Sie mit diesen Adressen eine Datei /etc/docker/daemon.json
:
$ sudo su root
# cd /etc/docker
# touch daemon.json
Geben Sie dies ein /etc/docker/daemon.json
:
{
"dns": ["10.0.0.2", "10.0.0.3"]
}
Beenden Sie von root:
# exit
Starten Sie nun Docker neu:
$ sudo service docker restart
ÜBERPRÜFUNG :
Überprüfen /etc/docker/daemon.json
Sie nun, ob Sie durch Hinzufügen der Datei "google.com" in eine IP-Adresse auflösen können:
$ docker run --rm busybox nslookup google.com
Server: 10.0.0.2
Address 1: 10.0.0.2
Name: google.com
Address 1: 2a00:1450:4009:811::200e lhr26s02-in-x200e.1e100.net
Address 2: 216.58.198.174 lhr25s10-in-f14.1e100.net
REFERENZEN :
Ich habe meine Lösung auf einen Artikel von Robin Winslow gestützt, der alle Anerkennung für die Lösung verdient. Danke, Robin!
"Korrigieren Sie die Netzwerk-DNS-Konfiguration von Docker." Robin Winslow. Abgerufen am 09.11.2016. https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/
newgrp docker
anstatt mich vollständig abzumelden und mich dann anzumelden, nachdem ich mich selbst gegeben habesudo usermod -aG docker myuserid
... es ist ein Vorteil für sicher, aber es passiert