Docker container ne peut accéder à internet qu'avec --net = host

vient d'installer docker 1.10.1 aujourd'hui en utilisant leur guide d'installation. Cependant, aucun de mes conteneurs ne peut accéder à internet à moins que j'ai utilisé --net=host dans la commande docker run . J'ai essayé plusieurs solutions de rechange à partir de ces postes:

  1. http://odino.org/cannot-connect-to-the-internet-from-your-docker-containers/
  2. mon conteneur docker n'a pas d'internet
  3. je ne peux pas obtenir les conteneurs Docker pour accéder à internet?
  4. Docker conteneur ne peut pas accéder à internet

rien n'a fonctionné jusqu'à présent, sauf pour ajouter --net=host à la commande run, mais je ne peux pas construire d'images à partir d'un fichier Dockerfile parce que je ne peux pas utiliser --net=host avec la commande build .

j'ai lancé docker network inspect bridge pour vérifier les paramètres pour le pont du réseau docker et a remarqué qu'il utilise (presque) le même sous-réseau et passerelle que mon VPN de travail. Peut-être à l'origine d'un problème? Cela pourrait également expliquer pourquoi lorsque je me connecte à mon travail VPN certains des sites ne se chargent pas.

C'est le résultat de docker network inspect bridge :

[
    {
        "Name": "bridge",
        "Id": "6d603ebd1c437d0d1f02be8406cf362f7f36d33168e42b9883891bae99834fa9",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        }
    }
]

ici ifconfig:

docker0   Link encap:Ethernet  HWaddr 02:42:9a:29:4a:c2  
          inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:9aff:fe29:4ac2/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:36 errors:0 dropped:0 overruns:0 frame:0
          TX packets:55 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2080 (2.0 KB)  TX bytes:8498 (8.4 KB)

enx00e09f0004bd Link encap:Ethernet  HWaddr 00:e0:9f:00:04:bd  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:70948 errors:0 dropped:1 overruns:0 frame:0
          TX packets:14839 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14270948 (14.2 MB)  TX bytes:3460691 (3.4 MB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:3407 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3407 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:326405 (326.4 KB)  TX bytes:326405 (326.4 KB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:172.17.62.55  P-t-P:172.17.62.55  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1406  Metric:1
          RX packets:18 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:1773 (1.7 KB)  TX bytes:1466 (1.4 KB)

wlp6s0    Link encap:Ethernet  HWaddr cc:3d:82:1a:1e:1d  
          inet addr:10.250.9.73  Bcast:10.250.9.255  Mask:255.255.254.0
          inet6 addr: fe80::ce3d:82ff:fe1a:1e1d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4381 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4398 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2246805 (2.2 MB)  TX bytes:835572 (835.5 KB)
5
demandé sur Community 2016-02-20 08:39:45

2 réponses

Je ne peux pas construire d'images à partir d'un fichier Dockerfile parce que je ne peux pas utiliser --net=host avec la commande build

C'est le travail du démon docker de pouvoir accéder à l'internet lors de la construction.

vous pouvez l'aider en passant des arguments de construction-temps comme

docker build --build-arg HTTP_PROXY=http://...

C'est-à-dire, si vous êtes derrière un mandataire.

Si vous ne l'êtes pas, vérifiez votre DNS paramètres (ce problème est dans le contexte de boot2docker, qui peut ne pas vous concerner ici, mais il peut encore donner quelques indices sur ce qu'il faut inspecter).

Voici un autre exemple d'émission DNS .

le OP wheeler confirme une question liée au dns dans les commentaires :

j'ai dû désactiver dnsmasq dans NetworkManager , pas je sais pourquoi ça affectait docker, mais la résolution DNS a commencé à fonctionner à l'intérieur des conteneurs quand j'ai désactivé le dnsmasq.

c'est une solution de contournement vu avant ici :

  • désactiver dnsmasq en commentant la ligne dns=dnsmasq "dans /etc/NetworkManager/NetworkManager.conf et en redémarrant le gestionnaire de réseau et docker.io services ( sudo service network-manager restart && sudo service docker.io restart ).
  • activer alternativement la ligne commentée DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4" dans /etc/default/docker.io (et aussi redémarrer le docker.io service).

cette dernière solution exige bien sûr que les serveurs 8.8.8.8 / 8.8.4.4 soient accessibles depuis votre réseau.


l'OP ajoute:

Cette solution a fonctionné dans une certaine mesure jusqu'à ce que j'utilise mon VPN pour travailler à partir de la maison, et le sous-réseau du pont docker a été collision avec mon sous-réseau VPN.

il recommande " régler l'ip du pont Docker avec Systemd "

/etc/systemd/system/docker.service.d/docker.conf doit contenir ceci:

[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// --bip=192.168.169.1/24

et:

systemctl stop docker

# We need a program called brctl to, well, control the bridge, which is part of the bridge-utils package.
sudo apt-get install bridge-utils

#Bring down the docker0 interface:
sudo ip link set docker0 down

# And delete the bridge.
sudo brctl delbr docker0

# Finally, start the Docker daemon
systemctl start docker
2
répondu VonC 2017-05-23 12:18:32

j'ai eu ce numéro sur Ubuntu 16.04 voici le correctif pour cela en éditant le NetworkManager.conf

sudo nano /etc/NetworkManager/NetworkManager.conf

comment out dns=DN-Masq puis redémarrez le Réseaumanager

sudo service network-manager restart

fait!

1
répondu IskandarG 2017-10-19 15:32:38