Запуск (слегка измененного) образа докера Ubuntu:16.04, не может получить доступ к DNS-серверам. Об этом свидетельствует возможность пропинговать разрешенный IP-адрес для google.com (например, 172.217.4.142, который был разрешен на другом компьютере), но не может пропинговать 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
Большая часть моего поиска в Google вызывает проблемы с установкой флагов DNS. Однако я попытался установить переменную DOCKER_OPTS в /etc/default/docker
для указания на многие 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"
а также установка переменной DNS в /etc/docker/daemon.json
(как описано здесь):
{
"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" ]
}
безуспешно ни для одной попытки.
(Это все IP-адреса DNS-серверов, перечисленные на сайте lifewire)
Один вариант, который я хотел попробовать, состоял в том, чтобы сбросить таблицы ip и сетевой мост, но это предложение слишком старое, чтобы доверять (например, docker -d
больше не является допустимой командой)
Возможная проблема заключается в том, что это устройство находится в сети Ethernet университета и должно быть занесено в белый список с адресом оборудования Ethernet устройства.
На хост-компьютере Ubuntu16 это было устройство eno1
(если я использую правильный термин).
Сначала я подумал, что, поскольку аппаратный адрес docker0
отличается, возможно, университетская сеть блокирует этот трафик.
Но я не думаю, что это проблема, потому что я все еще могу пропинговать необработанный IP-адрес.
Может быть, что-то теряется при переводе при запросе DNS?
Какие-либо предложения?
Информация о версии:
- Хост: Linux hostname 4.4.0-92-generic # 115-Ubuntu SMP четверг, 10 августа 09:04:33 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
- Контейнер: Ubuntu: 16.04 с скопированным пингом хоста (невозможно установить с apt без интернета).
- Докер: Докер версия 1.12.6, сборка 78d1802