In Ubuntu Gnome 15.10 funktioniert Docker fast sofort, aber es gibt eine Feinheit. Die Container scheinen nicht auf das Netzwerk zugreifen zu können, bis ich den Docker-Dienst neu starte.
Nach dem Booten des Hosts hat die Schnittstelle docker0 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 bekommt die docker0 Schnittstelle nur eine ipv6 Adresse und vom Container ist soweit ich das beurteilen kann keine Netzwerkverbindung möglich. 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 eine saubere wie kann man das beheben?
Akzeptierte Antwort:
TL;DR:Ich hatte Docker mit „apt-get install docker.io“ installiert. Die Installation der neuesten Version nach https://docs.docker.com/installation/ubuntulinux/ behebt das Problem.
Nach der Untersuchung des Problems scheint es, dass die Version von Docker in 15.10 die Docker0-Schnittstelle nicht korrekt erstellen und initialisieren kann. Bei der ersten Ausführung (Start des Dienst-Dockers) wird die Schnittstelle erstellt, aber nicht initialisiert, und bei der nachfolgenden Ausführung (Neustart des Dienst-Dockers) wird sie initialisiert. Dies kann durch manuelles Hinzufügen und Löschen der Schnittstelle mit brctl konsistent reproduziert werden. Dieser Fehler wurde im neuesten Docker behoben.
Verwandte:Wie kann ich das Herunterfahren/Neustarten von Lightdm in 14.04 deaktivieren?