GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak čistě nastavit síťový docker v Ubuntu Gnome 15.10?

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?
Ubuntu
  1. Jak nastavit HAProxy v Ubuntu 16.04

  2. Jak nastavit síťové rozhraní na Ubuntu, Debian a LinuxMint

  3. Jak používat příkaz netplan na Ubuntu

  1. Jak nainstalovat Docker na Ubuntu 18.04 / Ubuntu 18.10 / Ubuntu 19.04

  2. Jak přizpůsobit plochu Ubuntu Gnome 3?

  3. Jak nakonfigurovat klienta DHCP Ubuntu

  1. Jak nainstalovat Docker na Ubuntu 22.04

  2. Jak nastavit soukromý registr dockerů na Ubuntu 20.04

  3. Jak nastavit a nakonfigurovat Docker Swarm Cluster na Ubuntu