Временный сбой в разрешении имен [Errno -3] с Docker
Я следую учебному посоку докеров, и я со своей стороны должен создать приложение, используя:
docker build -t friendlyhello .
Доходит до шага 4, где после паузы я получаю эту ошибку:
Step 4/7 : RUN pip install -r requirements.txt
---> Running in 7f4635a7510a
Collecting Flask (from -r requirements.txt (line 1))
Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after
connection broken by
'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection
object at 0x7fe3984d9b10>: Failed to establish a new connection:
[Errno -3] Temporary failure in name resolution',)': /simple/flask/
Я не совсем уверен, что означает эта ошибка и как я могу ее решить.
Спасибо за вашу помощь!
Ответы
Ответ 1
У меня такая же проблема с Ubuntu 16.04 и Docker версии 17.09.0-ce.
Я не думаю, что отключение маски DNS является правильным решением.
Вот как я это решил:
Для Ubuntu
Отредактируйте/etc/default/docker и добавьте DNS-сервер в следующую строку:
Пример
DOCKER_OPTS="--dns 8.8.8.8 --dns 10.252.252.252"
Ссылка:
Docker - сбои сетевых вызовов при построении образа в корпоративной сети
Ответ 2
этот пост работал и для меня!
Решено днс маской [sic] отключить:
sudo vim/etc/NetworkManager/NetworkManager.conf
закомментировать dns = dnsmasq → # dns = dnsmasq
Перезагрузка сетевого менеджера службы sudo (или перезагрузка ВМ в этом случае)
от: https://github.com/moby/moby/issues/26330
Ответ 3
Я только что сделал sudo service docker restart
, и это сработало после. Определенно стоит попробовать, прежде чем прыгать, чтобы изменить ваши конфигурации.
Ответ 4
У меня такая же проблема с машиной Ubuntu 16.04.1 для docker-ce 17.
Его исправлено, отключив маску dns в сети.
sudo nano /etc/NetworkManager/NetworkManager.conf
Нажмите Ctrl + O сохранить и Ввести выход Ctrl + X
Перезапустите службу сети, выполнив следующую команду.
sudo service network-manager restart
После этого, если вы запустите команду сборки docker, все будет работать нормально.
Ответ 5
Ответ bkasap изменяет системную функцию, я бы сказал, преувеличена. Далее, потому что в Docker есть варианты сделать это. Новый способ сделать это
$ sudo vi /etc/docker/daemon.json
и добавить следующий контент
{
"dns": ["8.8.8.8", "8.8.4.4"]
}
Не забудь
sudo service docker restart
Ответ 6
Это глупо, но у меня была VPN-связь, когда я получил эту ошибку.
После отключения VPN, PIP снова начал работать.
Ответ 7
Эта ошибка означает, что ваш контейнер Docker не может получить доступ к вашей сети.
Начиная с версии systemd 220, настройка пересылки для данной сети (net.ipv4.conf..forwarding) по умолчанию отключена. Этот параметр предотвращает переадресацию IP-адресов. Он также конфликтует с поведением Dockers, позволяющим установить параметр net.ipv4.conf.all.forwarding в контейнерах.
Если вашему контейнеру необходимо разрешить хосты, которые являются внутренними для вашей сети, публичные серверы имен будут недостаточными. У вас есть два варианта:
- Вы можете указать DNS-сервер для Docker для использования или
- Вы можете отключить dnsmasq в NetworkManager. Если вы это сделаете, NetworkManager добавит ваш истинный DNS-сервер имен в /etc/resolv.conf, но вы потеряете возможные преимущества dnsmasq.
Вам нужно использовать только один из этих методов.
вы можете прочитать о том, как выполнить эти шаги здесь
Ответ 8
У меня была эта проблема в Windows 10 Pro, и я решил ее, щелкнув правой кнопкой мыши значок докера в трее и выбрав "Перезагрузить...". Это заняло несколько минут, а затем сеть снова заработала.
Ответ 9
для меня перезагрузка хост машины решила проблему