In Ubuntu Gnome 15.10 funktioniert Docker fast sofort, aber es gibt eine Subtilität. Die Container scheinen nicht in der Lage zu sein, auf das Netzwerk zuzugreifen, bis ich den Docker-Dienst neu starte.
Nach dem Booten des Hosts hat die Docker0-Schnittstelle keine IP-Adresse.
$ ifconfig docker0
docker0 Link encap:Ethernet HWaddr ea:03:cc:9c:7a:cd
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:108 (108.0 B)
Wenn ich dann einen Container starte, erhält die Docker0-Schnittstelle nur eine IPv6-Adresse und es ist keine Netzwerkverbindung vom Container möglich, soweit ich das beurteilen kann. Ich kann die Host-IP, LAN-IPs oder Internet-IPs nicht anpingen. Ich verwende das Ubuntu: Trusty Image und führe bash als Hauptprozess des Containers aus.
$ ifconfig docker0
docker0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet6 addr: fe80::7801:6eff:fe86:6dd8/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:704 (704.0 B) TX bytes:3917 (3.9 KB)
Wenn ich Docker neu starte, erhält Docker0 eine IPv4-Adresse (zusätzlich zur IPv6-Adresse) und alles funktioniert wie erwartet.
$ sudo service docker restart
$ ifconfig docker0
docker0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::7801:6eff:fe86:6dd8/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:704 (704.0 B) TX bytes:3917 (3.9 KB)
Natürlich kann ich den Docker-Dienst jedes Mal neu starten, wenn ich meinen Computer neu starte, oder wahrscheinlich ein Startskript hacken, um dies für mich zu tun (ich habe es nicht versucht). Kennt jemand einen sauberen Weg, um dies zu beheben?
quelle
Für mich ist es NetworkManager, der es vermasselt. Der Docker-Dienst erstellt eine Bridge, wie sie dann auf dbus verfügbar gemacht werden soll. NetworkManager beginnt damit, eine neue Schnittstelle auf dbus zu sehen und zu versuchen, sie zu konfigurieren (da es dumm genug ist zu wissen, dass Bridge Docker0 bereits in Ordnung konfiguriert ist). NetworkManager ist manchmal erfolgreich beim Konfigurieren (Neukonfigurieren) von docker0, aber manchmal schlägt dies fehl. Manchmal wird die Box neu gestartet und Docker0 wird die IP zugewiesen, manchmal nicht.
Um zu verhindern, dass NetworkManager durcheinander kommt, fügen Sie hinzu
zu
/etc/network/interfaces
vermutenNetworkManager.conf
hatDies ist die Standardeinstellung am 15.10
(Der Fehler sollte wahrscheinlich ausgelöst werden, um zu verhindern, dass NetworkManager Docker-spezifische Schnittstellen durcheinander bringt.)
quelle