web-dev-qa-db-fra.com

Échec temporaire de la résolution de nom [Errno -3] avec Docker

Je suis le tutoriel docker et je suis dans la partie où je dois construire l'application en utilisant:

docker build -t friendlyhello .

Cela va jusqu'à l'étape 4, où après une pause, j'obtiens cette erreur:

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/

Je ne suis pas tout à fait sûr de ce que cette erreur signifie et comment je peux y remédier.

Merci de votre aide! 

14
monadoboi

ce poste a fonctionné pour moi aussi!

Résolu par masque dns [sic] disable:

Sudo vim /etc/NetworkManager/NetworkManager.conf

commenter dns = dnsmasq -> # dns = dnsmasq

Redémarrage du gestionnaire de réseau du service Sudo (ou redémarrez VM dans ce cas)

à partir de: https://github.com/moby/moby/issues/26330

12
bkasap

J'ai eu le même problème avec Ubuntu 16.04 et Docker version 17.09.0-ce . Je ne pense pas que désactiver le masque DNS soit la bonne solution.

Voici comment je l'ai résolu:

Pour Ubuntu

Éditez/etc/default/docker et ajoutez votre serveur DNS à la ligne suivante:

Exemple DOCKER_OPTS="--dns 8.8.8.8 --dns 10.252.252.252"

Référence: Docker - Les appels réseau échouent lors de la création d'image sur le réseau d'entreprise

11
Jack Fan

Je rencontre le même problème avec la machine Ubuntu 16.04.1 pour docker-ce 17. Il a été corrigé en désactivant le masque DNS dans le réseau.

Sudo nano /etc/NetworkManager/NetworkManager.conf 

Appuyez sur Ctrl + O save et Entrée la sortie Ctrl + X

Redémarrez le service réseau en exécutant la commande ci-dessous.

Sudo service network-manager restart

Après cela, si vous exécutez la commande docker build, tout fonctionnera correctement.

4
Abhilash

C'est idiot, mais j'avais un VPN connecté quand j'ai eu cette erreur. 

Après avoir déconnecté le VPN, PIP a recommencé à fonctionner. 

2
James Anderson

la réponse de bkasap modifie la fonctionnalité d'un système, je dirais exagérée. En outre, il existe des options dans docker pour le faire. La nouvelle façon de faire est

$ Sudo vi /etc/docker/daemon.json

et ajouter le contenu suivant

{
    "dns": ["8.8.8.8", "8.8.4.4"]
}

N'oublie pas de

Sudo service docker restart
1
JAR

Cette erreur signifie que votre conteneur Docker ne peut pas accéder à votre réseau. À compter de la version 220 de Systemd, le paramètre de transfert pour un réseau donné (net.ipv4.conf..forwarding) est désactivé par défaut. Ce paramètre empêche le transfert IP. Cela contredit également le comportement de Docker qui consiste à activer le paramètre net.ipv4.conf.all.forwarding dans les conteneurs.

Si votre conteneur doit résoudre des hôtes internes à votre réseau, les serveurs de noms publics ne seront pas adéquats. Vous avez deux choix:

  1. Vous pouvez spécifier un serveur DNS que Docker doit utiliser, ou
  2. Vous pouvez désactiver Dnsmasq dans NetworkManager. Si vous faites cela, NetworkManager ajoutera votre vrai serveur de noms DNS à /etc/resolv.conf, mais vous perdrez les avantages possibles de dnsmasq . Vous devez uniquement utiliser l'une de ces méthodes.

vous pouvez lire comment exécuter ces étapes ici

1
Abhishek Jha