V Ubuntu Gnome 15.10 Docker téměř funguje hned po vybalení, ale je tu jemnost. Zdá se, že kontejnery nebudou mít přístup k síti, dokud nerestartuji službu docker.
Po spuštění hostitele nemá rozhraní docker0 žádnou IP adresu.
$ 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)
Pokud poté spustím kontejner, rozhraní docker0 získá pouze adresu ipv6 a pokud mohu říci, z kontejneru není možné žádné síťové připojení. Nemohu pingnout hostitelskou IP, LAN IP nebo internetovou IP. Jako hlavní proces kontejneru používám obrázek ubuntu:trusty a spouštím bash.
$ 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)
Pokud restartuji docker, docker0 získá adresu ipv4 (kromě adresy ipv6) a vše funguje podle očekávání.
$ 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)
Samozřejmě mohu restartovat službu docker pokaždé, když restartuji svůj počítač, nebo pravděpodobně hacknout spouštěcí skript, aby to udělal za mě (nezkoušel jsem). Ví někdo o čistém způsob, jak to opravit?
Přijatá odpověď:
TL;DR:Nainstaloval jsem Docker pomocí „apt-get install docker.io“. Problém řeší instalace nejnovější verze podle https://docs.docker.com/installation/ubuntulinux/.
Po prozkoumání problému se zdá, že verze Dockeru v 15.10 nemůže správně vytvořit a inicializovat rozhraní docker0. Při prvním spuštění (spuštění servisního dockeru) vytvoří rozhraní, ale nepodaří se jej inicializovat a při dalším spuštění (restartování servisního dockeru) jej inicializuje. To lze reprodukovat důsledným přidáváním a ručním odstraňováním rozhraní pomocí brctl. Tato chyba byla opravena v nejnovějším Dockeru.
Související:Jak zakázat vypnutí/reboot z lightdm ve 14.04?