Docker "docker0` appareil meurt à plusieurs reprises (`inet addr" disparaît)
Je suis en cours d'exécution Docker version 1.4.1, build 5bc2ff8
sur Ubuntu 14.04. Quand je docker run
tout conteneur, après quelques minutes, mon docker0
pont "meurt", et le conteneur cesse d'être en mesure d'atteindre le réseau. Avant que la connexion ne meurt, l'exécution de ifconfig
rapports un docker0
appareil avec un inet addr
comme:
docker0 Link encap:Ethernet HWaddr 56:84:7a:fe:97:99
inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
[... etc.]
Mais après la connexion meurt, ifconfig
montre que l'adresse ipv4 a disparu:
docker0 Link encap:Ethernet HWaddr 56:84:7a:fe:97:99
inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8116 errors:0 dropped:0 overruns:0 frame:0
TX packets:15995 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2444859 (2.4 MB) TX bytes:17440729 (17.4 MB)
Le redémarrage de docker, par exemple, avec sudo service docker restart
, apporte de l'appareil vers l'arrière, mais tous mes contenants de mourir et le problème recommence. Je ne peux pas obtenir quoi que ce soit de manière fiable de fonctionner plus de quelques minutes à une heure. Pas assez longtemps pour l'ensemble d'un docker build
pour la plupart des projets.
- Ce qui pourrait être la cause?
- Comment puis-je diagnostiquer?
- Quelles sont les solutions possibles?
Merci!
Mise à jour: j'ai peut sûrement déclencher cette docker0
-dropping comportement simplement en commençant par un conteneur avec docker run -t -i ubuntu /bin/bash
, et puis sortir avec ctrl-d
. Quand je le fais, voici ce que je vois dans /var/log/syslog
myhost kernel: docker0: port 1(veth80ddeaf) entered disabled state
myhost kernel: device veth80ddeaf left promiscuous mode
myhost kernel: docker0: port 1(veth80ddeaf) entered disabled state
'
myhost dhclient: Internet Systems Consortium DHCP Client 4.2.4
myhost dhclient: Copyright 2004-2012 Internet Systems Consortium.
myhost dhclient: All rights reserved.
myhost dhclient: For info, please visit https://www.isc.org/software/dhcp/
myhost dhclient:
myhost dhclient: Listening on LPF/docker0/56:84:7a:fe:97:99
myhost dhclient: Sending on LPF/docker0/56:84:7a:fe:97:99
myhost dhclient: Sending on Socket/fallback
myhost kernel: IPv6: ADDRCONF(NETDEV_UP): docker0: link is not ready
Mise à jour #2: La fréquence de l'échec semble dépendre de combien de temps le conteneur s'exécute. Par exemple:
docker run -i -t ubuntu sleep 0
--> `docker0` "survives" ~100% of the time
docker run -i -t ubuntu sleep 1
--> `docker0` survives ~80% of the time
docker run -i -t ubuntu sleep 5
--> `docker0` survives ~0% of the time
--net="host"
comme solution de contournement. Il fonctionne?la spécification de
--net="host"
ne pourrait m'empêcher de containerizing le conteneur de réseautage. Ce n'est donc pas une solution à mon problème, merci pour la suggestion!OriginalL'auteur Bosh | 2015-03-08
Vous devez vous connecter pour publier un commentaire.
Quand
docker0
a une adresse ip, faut-il aller loin si vous ne pas démarrer tous les conteneurs? Si elle persiste indéfiniment jusqu'à ce que vous commencez un récipient, je voudrais commencer par regarder le menu fixe les journaux ainsi que de résidus de la journaux système lorsque vous démarrez un conteneur.L'adresse ip de disparaître à intervalles réguliers (par exemple, toutes les N minutes)? Si oui, je regarde les logs de
cron
pour voir si certains tâche périodique est responsable.Vous exécutez NetworkManager? Ne désactivation de NetworkManager le problème? Je suis en cours d'exécution Docker sur un système avec NetworkManager sans problème, mais j'ai
no-auto-default=*
mis dans ma config, ce qui peut avoir un impact sur ce genre de chose.Mise à jour
C'est très suspect:
Il ne devrait pas être tout
dhclient
processus d'écoute surdocker0
, et c'est absolument ce qui est à l'origine de votre adresse ip à disparaître. Si vous n'êtes pas explicitement de l'exécution d'un client dhcp sur cette interface, cela suggère vraiment que NetworkManager est en fait d'essayer de gérer cette interface. Vous avez dit que vous avez désactivé le NetworkManager, mais avez-vous confirmer que le processus a été arrêté? Quel est le processus parent de ladhclient
qui est à l'écoute surdocker0
? Si vous arrêtez ledhclient
processus, fait-il de redémarrage? Le problème est-il loin?network-manager
est désactivé. J'ai inclus un pertinentsyslog
dump une mise à jour à ma question ci-dessus. J'apprécierais plus de précisions.Voir mise à jour supplémentaire ce qui suggère une condition de course (durée de conteneur live semble avoir un effet sur la probabilité de défaillance). Toutes les pensées sur la façon de déboguer?
Quand je lance
ps aux | grep -i dhclient
etps aux | grep -i network
sur mon système hôte, je confirme, il n'y a pas des résultats (dhclient
n'est pas en cours d'exécution). Mais je vois cesmyhost dhclient
entrées dans syslog-peut-êtredhclient
est d'une certaine manière être engagée du fait de l'contenant de l'événement d'arrêt? Est-il un moyen pour que je puisse étudier cette possibilité?J'aimerais avoir votre avis sur ce -- il semble qu'aucune
dhclient
est en cours d'exécution sur mon système hôte avant/après que j'ai commencer un nouveau conteneur docker. Est-il possible que le lancement dedhclient
est en quelque sorte déclenché uniquement lorsque le conteneur des sorties, ou qu'un autre processus (appelé quelque chose d'autre quedhclient
est à l'origine de lamyhost dhclient
les lignes du journal à paraître dans mon syslog)?J'ai eu le même problème ici (dhclient a commencé juste après le panneau conteneur de sortie). Je pensais ainsi que NetworkManager était le problème. Mais le problème était en fait liée à wicd (sans fil et par câble gestionnaire de réseau) un autre gestionnaire de réseau installé sur ma machine. La désactivation de wicd résolu le problème pour moi.
OriginalL'auteur larsks
La
wcid
service semble être la cause en effet.J'ai trouvé dans la config :
J'ai changé de ce
eth0
.J'ai oublié de redémarrer le service, mais mon problème a disparu lorsque le
wicd
service a été arrêté.Après le changement ci-dessus, j'ai commencé à nouveau, je n'avais plus de problèmes avec elle.
Apparemment, certains autoconfig problème avec
wicd
?Pour obtenir le bridge fonctionne de nouveau, vous pouvez utiliser:
et le pont sera d'obtenir l'adresse IP de retour.
OriginalL'auteur Vincent Gerris
J'ai eu exactement ce même problème et la cause a été
wicd
. En cours d'exécution:...devrait faire l'affaire.
OriginalL'auteur Chris Seymour