Décommentant DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
en /etc/default/docker
tant que Matt transporteur suggéré ne pas travailler pour moi. Ni mettre les serveurs DNS de ma société dans ce fichier. Mais, il y a un autre moyen (lisez la suite).
Commençons par vérifier le problème:
$ docker run --rm busybox nslookup google.com # takes a long time
nslookup: can't resolve 'google.com' # <--- appears after a long time
Server: 8.8.8.8
Address 1: 8.8.8.8
Si la commande semble se bloquer, mais finit par cracher l'erreur "impossible de résoudre" google.com "", vous rencontrez le même problème que moi.
La nslookup
commande interroge le serveur DNS 8.8.8.8 afin de transformer l'adresse texte de «google.com» en adresse IP. Ironiquement, 8.8.8.8 est le serveur DNS public de Google . En cas d' nslookup
échec, les serveurs DNS publics tels que 8.8.8.8 peuvent être bloqués par votre entreprise (ce que je suppose est pour des raisons de sécurité).
Vous penseriez que l'ajout des serveurs DNS de votre entreprise à DOCKER_OPTS
in /etc/default/docker
devrait faire l'affaire, mais pour une raison quelconque, cela n'a pas fonctionné pour moi. Je décris ci-dessous ce qui a fonctionné pour moi.
SOLUTION :
Sur l'hôte (j'utilise Ubuntu 16.04), découvrez les adresses des serveurs DNS primaire et secondaire:
$ nmcli dev show | grep 'IP4.DNS'
IP4.DNS[1]: 10.0.0.2
IP4.DNS[2]: 10.0.0.3
À l'aide de ces adresses, créez un fichier /etc/docker/daemon.json
:
$ sudo su root
# cd /etc/docker
# touch daemon.json
Mettez ceci dans /etc/docker/daemon.json
:
{
"dns": ["10.0.0.2", "10.0.0.3"]
}
Quitter la racine:
# exit
Maintenant, redémarrez le docker:
$ sudo service docker restart
VÉRIFICATION :
Vérifiez maintenant que l'ajout du /etc/docker/daemon.json
fichier vous permet de résoudre "google.com" en une adresse IP:
$ docker run --rm busybox nslookup google.com
Server: 10.0.0.2
Address 1: 10.0.0.2
Name: google.com
Address 1: 2a00:1450:4009:811::200e lhr26s02-in-x200e.1e100.net
Address 2: 216.58.198.174 lhr25s10-in-f14.1e100.net
RÉFÉRENCES :
J'ai basé ma solution sur un article de Robin Winslow, qui mérite tout le mérite de la solution. Merci Robin!
"Correction de la configuration DNS réseau de Docker." Robin Winslow. Récupéré 09/11/2016. https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/
newgrp docker
lieu de faire une déconnexion complète, puis connectez-vous après m'être donnésudo usermod -aG docker myuserid
... c'est un cas de pointe pour bien sûr que cela arrive