Descomentando DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"em /etc/default/dockercomo 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 nslookupcomando 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 nslookupfalhar, 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_OPTSin /etc/default/dockerdeveria 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.jsonarquivo 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 dockervez 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