Odkomentowanie DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
w /etc/default/docker
jak Matt Przewoźnik zaproponował zrobił nie dla mnie. Ani też umieszczenie serwerów DNS mojej firmy w tym pliku. Ale jest inny sposób (czytaj dalej).
Najpierw zweryfikujmy problem:
$ 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
Jeśli wydaje się, że polecenie się zawiesiło, ale w końcu wypluwa błąd „nie można rozwiązać adresu„ google.com ””, oznacza to, że masz ten sam problem co ja.
nslookup
Komenda wysyła zapytanie do serwera DNS 8.8.8.8 w celu przekształcenia adresu tekst „google.com” na adres IP. Jak na ironię, 8.8.8.8 to publiczny serwer DNS Google . Jeśli nslookup
zawiedzie, publiczne serwery DNS, takie jak 8.8.8.8, mogą zostać zablokowane przez twoją firmę (co, jak zakładam, jest ze względów bezpieczeństwa).
Można by pomyśleć, że dodanie serwerów DNS Twojej firmy do DOCKER_OPTS
in /etc/default/docker
powinno załatwić sprawę, ale z jakiegoś powodu nie zadziałało. Poniżej opiszę, co zadziałało.
ROZWIĄZANIE :
Na hoście (używam Ubuntu 16.04) znajdź podstawowy i pomocniczy adres serwera DNS:
$ nmcli dev show | grep 'IP4.DNS'
IP4.DNS[1]: 10.0.0.2
IP4.DNS[2]: 10.0.0.3
Korzystając z tych adresów, utwórz plik /etc/docker/daemon.json
:
$ sudo su root
# cd /etc/docker
# touch daemon.json
Umieść to w /etc/docker/daemon.json
:
{
"dns": ["10.0.0.2", "10.0.0.3"]
}
Wyjdź z roota:
# exit
Teraz zrestartuj docker:
$ sudo service docker restart
WERYFIKACJA :
Teraz sprawdź, czy dodanie /etc/docker/daemon.json
pliku umożliwia przekształcenie „google.com” w adres IP:
$ 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
ODNIESIENIA :
Swoje rozwiązanie oparłem na artykule Robina Winslowa, któremu należy się pochwała za to rozwiązanie. Dzięki, Robin!
„Napraw konfigurację DNS sieci Docker”. Robin Winslow. Źródło 2016-11-09. https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/
newgrp docker
wydam zamiast robić pełne wylogowanie, a następnie zaloguj się po podaniu sobiesudo usermod -aG docker myuserid
... jest to wyjątkowa sprawa dla pewnie jednak tak się dzieje