En Ubuntu Gnome 15.10, Docker casi funciona de inmediato, pero hay una sutileza. Parece que los contenedores no pueden acceder a la red hasta que reinicio el servicio Docker.
Después de iniciar el host, la interfaz docker0 no tiene ninguna dirección IP.
$ 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)
Si luego inicio un contenedor, la interfaz docker0 solo obtiene una dirección ipv6 y, hasta donde yo sé, no es posible ninguna conexión de red desde el contenedor. No puedo hacer ping a la IP del host, a las IP de LAN o a las IP de Internet. Estoy usando la imagen ubuntu:trusty y ejecutando bash como proceso principal del contenedor.
$ 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)
Si reinicio Docker, Docker0 obtiene una dirección ipv4 (además de la dirección ipv6) y todo funciona como se esperaba.
$ 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)
Por supuesto, puedo reiniciar el servicio Docker cada vez que reinicio mi máquina, o probablemente piratear un script de inicio para que lo haga por mí (no lo he intentado). ¿Alguien sabe de unlimpio¿Manera de solucionar esto?
Respuesta1
TL;DR: Instalé Docker usando "apt-get install docker.io". Instalación de la última versión siguientehttps://docs.docker.com/installation/ubuntulinux/soluciona el problema.
Después de investigar el problema, parece que la versión de Docker 15.10 no puede crear ni inicializar la interfaz docker0 correctamente. En la primera ejecución (inicio de la ventana acoplable del servicio), creará la interfaz pero no podrá inicializarla, y en la ejecución posterior (reinicio de la ventana acoplable del servicio) la inicializará. Esto se puede reproducir consistentemente agregando y eliminando la interfaz manualmente con brctl. Este error se ha solucionado en la última versión de Docker.
Respuesta2
Para mí es NetworkManager el que se estropea. El servicio Docker crea un puente como debería y luego lo expone en dbus. NetworkManager comienza a ver una nueva interfaz en dbus e intenta configurarla (ya que es bastante estúpido saber que el puente docker0 ya está configurado bien). NetworkManager a veces logra configurar (reconfigurar) docker0 pero a veces falla. Entonces, a veces reinicia Box y Docker0 tendrá una IP asignada, otras veces no.
Para evitar que NetworkManager se estropee, agregue
iface docker0 inet manual
a /etc/network/interfaces
asumir NetworkManager.conf
tiene
[ifupdown] managed=false
que está predeterminado en 15.10
(Probablemente debería plantearse un error para evitar que NetworkManager arruine las interfaces específicas de la ventana acoplable)