Isso acabou sendo um problema com a rede da universidade. No meu entender, eles estavam de alguma forma bloqueando as solicitações de DNS e fomos instruídos a usar o endereço do servidor DNS interno na configuração do nosso docker.
Executando uma imagem do docker Ubuntu (16.04), ligeiramente modificada, não pode acessar servidores DNS. Isto é evidenciado por ser capaz de fazer o ping de um endereço IP resolvido para google.com (como 172.217.4.142, que foi resolvido em um computador diferente), mas não conseguir pingar google.com.
root@12345678910:/# ping -c 1 216.58.194.174
PING 216.58.194.174 (216.58.194.174) 56(84) bytes of data.
64 bytes from 216.58.194.174: icmp_seq=1 ttl=46 time=20.5 ms
--- 216.58.194.174 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 20.551/20.551/20.551/0.000 ms
root@12345678910:/# ping -c 1 google.com
ping: unknown host google.com
A maioria do meu googling inventa questões sobre a configuração de sinalizadores de DNS. No entanto, tentei definir a variável DOCKER_OPTS em /etc/default/docker
para apontar para muitos servidores DNS:
DOCKER_OPTS="--dns 209.244.0.3 --dns 209.244.0.4 --dns 64.6.64.6 --dns 64.6.65.6 --dns 8.8.8.8 --dns 8.8.4.4 --dns 84.200.69.80 --dns 84.200.70.40 --dns 8.26.56.26 --dns 8.20.247.20 --dns 208.67.222.222 --dns 208.67.220.220 --dns 199.85.126.10 --dns 199.85.127.10 --dns 81.218.119.11 --dns 209.88.198.133 --dns 195.46.39.39 --dns 195.46.39.40 --dns 192.95.54.3 --dns 192.95.54.1 --dns 208.76.50.50 --dns 208.76.51.51 --dns 216.146.35.35 --dns 216.146.36.36 --dns 37.235.1.174 --dns 37.235.1.177 --dns 198.101.242.72 --dns 23.253.163.53 --dns 77.88.8.8 --dns 77.88.8.1 --dns 91.239.100.100 --dns 89.233.43.71 --dns 74.82.42.42 --dns 109.69.8.51"
bem como definir a variável DNS em /etc/docker/daemon.json
(conforme descrito aqui ):
{
"dns": [ "209.244.0.3", "209.244.0.4", "64.6.64.6", "64.6.65.6", "8.8.8.8", "8.8.4.4", "84.200.69.80", "84.200.70.40", "8.26.56.26", "8.20.247.20", "208.67.222.222", "208.67.220.220", "199.85.126.10", "199.85.127.10", "81.218.119.11", "209.88.198.133", "195.46.39.39", "195.46.39.40", "192.95.54.3", "192.95.54.1", "208.76.50.50", "208.76.51.51", "216.146.35.35", "216.146.36.36", "37.235.1.174", "37.235.1.177", "198.101.242.72", "23.253.163.53", "77.88.8.8", "77.88.8.1", "91.239.100.100", "89.233.43.71", "74.82.42.42", "109.69.8.51" ]
}
sem sucesso para nenhuma das tentativas.
(Estes são todos os endereços IP dos servidores DNS listados em lifewire )
Uma opção que eu queria tentar era redefinir as tabelas ip e a ponte de rede , mas essa sugestão é muito antiga para confiar (por exemplo, docker -d
não é mais um comando válido)
Um possível problema é que esta máquina está em Ethernet universitária e teve que ser listada em branco com o endereço de hardware Ethernet da máquina.
Na máquina host Ubuntu16, esse era o dispositivo eno1
(se eu estivesse usando o termo correto).
Meu primeiro pensamento foi que, como o endereço de hardware docker0
é diferente, talvez a rede da universidade esteja bloqueando esse tráfego.
Mas eu não acho que este é o problema, porque eu ainda posso pingar o endereço IP bruto.
Talvez algo esteja perdido na tradução ao consultar o DNS?
Alguma sugestão?
Informação da versão:
Tags dns networking docker linux mac-address