Decommentando DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
a /etc/default/docker
come Matt Carrier ha suggerito ha NON funzionato per me. Né ha messo i server DNS della mia azienda in quel file. Ma c'è un altro modo (continua a leggere).
Innanzitutto, verifichiamo il problema:
$ 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
Se il comando sembra bloccarsi, ma alla fine viene visualizzato l'errore "Impossibile risolvere 'google.com'", hai lo stesso problema che ho io.
Il nslookup
comando interroga il server DNS 8.8.8.8 per trasformare l'indirizzo di testo di "google.com" in un indirizzo IP. Ironia della sorte, 8.8.8.8 è il server DNS pubblico di Google . Se nslookup
fallisce, i server DNS pubblici come 8.8.8.8 potrebbero essere bloccati dalla tua azienda (che presumo sia per motivi di sicurezza).
Penseresti che aggiungere i server DNS della tua azienda a DOCKER_OPTS
in /etc/default/docker
dovrebbe fare il trucco, ma per qualsiasi motivo, non ha funzionato per me. Descrivo di seguito cosa ha funzionato per me.
SOLUZIONE :
Sull'host (sto usando Ubuntu 16.04), trova gli indirizzi del server DNS primario e secondario:
$ nmcli dev show | grep 'IP4.DNS'
IP4.DNS[1]: 10.0.0.2
IP4.DNS[2]: 10.0.0.3
Utilizzando questi indirizzi, crea un file /etc/docker/daemon.json
:
$ sudo su root
# cd /etc/docker
# touch daemon.json
Metti questo in /etc/docker/daemon.json
:
{
"dns": ["10.0.0.2", "10.0.0.3"]
}
Esci dalla radice:
# exit
Ora riavvia docker:
$ sudo service docker restart
VERIFICA :
Ora verifica che l'aggiunta del /etc/docker/daemon.json
file ti consenta di risolvere "google.com" in un indirizzo 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
RIFERIMENTI :
Ho basato la mia soluzione su un articolo di Robin Winslow, che merita tutto il merito per la soluzione. Grazie, Robin!
"Risolvi la configurazione del DNS di rete di Docker." Robin Winslow. Estratto 2016/11/09. https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/
newgrp docker
invece di eseguire un log completo, quindi accedi dopo aver dato me stessosudo usermod -aG docker myuserid
... è un caso limite per certo comunque che accada