Временный сбой в разрешении имен [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

для меня перезагрузка хост машины решила проблему