Descomentando DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
em /etc/default/docker
como Matt portador sugeriu que não funciona para mim. Nem colocar os servidores DNS da minha empresa nesse arquivo. Mas, há outra maneira (continue lendo).
Primeiro, vamos verificar o 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 o comando parecer travar, mas eventualmente exibir o erro "não é possível resolver 'google.com'", você tem o mesmo problema que eu.
O nslookup
comando consulta o servidor DNS 8.8.8.8 para transformar o endereço de texto de 'google.com' em um endereço IP. Ironicamente, 8.8.8.8 é o servidor DNS público do Google . Se nslookup
falhar, os servidores DNS públicos como 8.8.8.8 podem ser bloqueados pela sua empresa (o que presumo que seja por razões de segurança).
Você pensaria que adicionar os servidores DNS da sua empresa ao DOCKER_OPTS
in /etc/default/docker
deveria resolver, mas por algum motivo, não funcionou para mim. Eu descrevo o que funcionou para mim abaixo.
SOLUÇÃO :
No host (estou usando o Ubuntu 16.04), descubra os endereços de servidor DNS primário e secundário:
$ nmcli dev show | grep 'IP4.DNS'
IP4.DNS[1]: 10.0.0.2
IP4.DNS[2]: 10.0.0.3
Usando esses endereços, crie um arquivo /etc/docker/daemon.json
:
$ sudo su root
# cd /etc/docker
# touch daemon.json
Coloque isso em /etc/docker/daemon.json
:
{
"dns": ["10.0.0.2", "10.0.0.3"]
}
Sair da raiz:
# exit
Agora reinicie o docker:
$ sudo service docker restart
VERIFICAÇÃO :
Agora, verifique se adicionar o /etc/docker/daemon.json
arquivo permite que você resolva 'google.com' em um endereço 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
REFERÊNCIAS :
Baseei minha solução em um artigo de Robin Winslow, que merece todo o crédito pela solução. Obrigado, Robin!
"Corrigir configuração DNS de rede do Docker." Robin Winslow. Retirado 2016-11-09. https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/
newgrp docker
vez de fazer um logoff completo e fazer o login depois de me entregarsudo usermod -aG docker myuserid
... é um caso extremo para com certeza, no entanto, acontece