Dejar DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
de comentar /etc/default/docker
como Matt Carrier sugirió NO funcionó para mí. Tampoco poner los servidores DNS de mi empresa en ese archivo. Pero, hay otra forma (sigue leyendo).
Primero, verifiquemos el 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
Si el comando parece bloquearse, pero finalmente escupe el error "no se puede resolver 'google.com'", entonces tienes el mismo problema que yo.
El nslookup
comando consulta el servidor DNS 8.8.8.8 para convertir la dirección de texto de 'google.com' en una dirección IP. Irónicamente, 8.8.8.8 es el servidor DNS público de Google . Si nslookup
falla, los servidores DNS públicos como 8.8.8.8 podrían ser bloqueados por su empresa (lo que supongo que es por razones de seguridad).
Se podría pensar que la adición de servidores DNS de su empresa a DOCKER_OPTS
en /etc/default/docker
debe hacer el truco, pero por alguna razón, no funcionó para mí. A continuación, describo lo que funcionó para mí.
SOLUCION :
En el host (estoy usando Ubuntu 16.04), averigüe las direcciones del servidor DNS primario y secundario:
$ nmcli dev show | grep 'IP4.DNS'
IP4.DNS[1]: 10.0.0.2
IP4.DNS[2]: 10.0.0.3
Con estas direcciones, cree un archivo /etc/docker/daemon.json
:
$ sudo su root
# cd /etc/docker
# touch daemon.json
Pon esto en /etc/docker/daemon.json
:
{
"dns": ["10.0.0.2", "10.0.0.3"]
}
Salir de la raíz:
# exit
Ahora reinicie la ventana acoplable:
$ sudo service docker restart
VERIFICACION :
Ahora verifique que agregar el /etc/docker/daemon.json
archivo le permite resolver 'google.com' en una dirección 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
REFERENCIAS :
Basé mi solución en un artículo de Robin Winslow, quien merece todo el crédito por la solución. ¡Gracias, Robin!
"Corrige la configuración de DNS de red de Docker". Robin Winslow. Consultado el 9 de noviembre de 2016. https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/
newgrp docker
lugar de hacer un cierre de sesión completo y luego inicie sesión después de darmesudo usermod -aG docker myuserid
... es un caso de borde para seguro, sin embargo, sucede