Pomoc Docker - Temporary failure resolving 'archive.ubuntu.com'

piotrmb

Nowy użytkownik
Noobie
14 Grudzień 2015
5
0
1
37
QNAP
Ethernet
802.11n (Wi-Fi 4)
Mam problem z budowaniem obrazów za pomocą dockera na moim Qnap TS-253 PRO. Jakiś czas temu zainstalowałem container station, chciałem zbudować jeden obraz z sieci z drobnymi modyfikacjami. Wszystko zbudowało się i działało bezproblemowo. Aż do wczoraj. Chciałem wprowadzić kolejne modyfikacje, więc stary obraz usunąłem i postanowiłem zbudować nową wersję - niestety już bez powodzenia.

Problem wygląda następująco:
Kod:
share/Virtual/container/docker-transmission-openvpn] # docker build -t transmission-openvpn .
Sending build context to Docker daemon 2.437 MB
Step 1 : FROM ubuntu:14.04
14.04: Pulling from library/ubuntu
e20a84c3233b: Pull complete
d6c64ee0ce32: Pull complete
d8d3e3b9a2f4: Pull complete
ce76de2e871b: Pull complete
Digest: sha256:77bfdb2399358935732d9f0e6a119979c4277d982744e31a5d0ef76ade6cc9e4
Status: Downloaded newer image for ubuntu:14.04
 ---> ce76de2e871b
Step 2 : MAINTAINER Kristian Haugene
 ---> Running in 5089dcb027b0
 ---> e0934d124d22
Removing intermediate container 5089dcb027b0
Step 3 : VOLUME /data
 ---> Running in 2ef6564cfde2
 ---> 798146050dff
Removing intermediate container 2ef6564cfde2
Step 4 : VOLUME /config
 ---> Running in 0d6eed94f4f9
 ---> d0455db81e62
Removing intermediate container 0d6eed94f4f9
Step 5 : RUN apt-get update     && apt-get -y install software-properties-common     && add-apt-repository ppa:transmissionbt/ppa     && apt-get update     && apt-get install -y transmission-cli transmission-common transmission-daemon openvpn curl     && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*     && curl -L https://github.com/jwilder/dockerize/releases/download/v0.0.2/dockerize-linux-amd64-v0.0.2.tar.gz | tar -C /usr/local/bin -xzv
 ---> Running in 8a8eaeb77798
Err http://archive.ubuntu.com trusty InRelease
Err http://archive.ubuntu.com trusty-updates InRelease
Err http://archive.ubuntu.com trusty-security InRelease
Err http://archive.ubuntu.com trusty Release.gpg
Temporary failure resolving 'archive.ubuntu.com'

Czyli działa to do momentu, aż z dockera trzeba się połączyć do sieci. Jedyna rzecz jaką zrobiłem pomiędzy wcześniejszymi buildami a wystąpieniem problemu to instalacja na nasie Perla razem z Opkg - nie wiem czy mogło to mieć związek z tą sytuacją.

Co próbowałem już zrobić:
- reinstalacja container station łączenie z usunięciem katalogu roboczego
- reset ustawień NAS bez usuwania danych z dysku twardego i ponowna instalacja container station

Szukałem sporo rozwiązań po sieci. Ustawienia DNS na samym NAS są ok - mogę zrobić pinga do archive.ubuntu.com. Próbowałem też - zmieniać DNS na Google'a = 8.8.8.8 - bez zmian.

Na konsoli spróbowałem ręcznie zatrzymać i uruchomić ponownie dockera z użyciem /etc/init.d/container-station.sh. Podczas wydania polecenia do startu dostaję błędy:
Kod:
[/share/Virtual/container/docker-transmission-openvpn] # /etc/init.d/container-station.sh start
RTNETLINK answers: File exists
iptables v1.4.12: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
iptables v1.4.12: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

Może to jest przyczyną, ale nie wiem jak to wyglądało przed wystąpieniem problemu.

Jeszcze wynik z ifconfig przy włączonym container station - trochę dziwi mnie, że połączenie do routera jest widoczne na br0 a nie eth0 ,ale może tak powinno być?
Kod:
br0       Link encap:Ethernet  HWaddr 00:08:9B:F3:47:92
          inet addr:192.168.7.108  Bcast:192.168.7.255  Mask:255.255.255.0
          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:116661 errors:0 dropped:441 overruns:0 frame:0
          TX packets:46570 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:145930134 (139.1 MiB)  TX bytes:11881301 (11.3 MiB)

eth0      Link encap:Ethernet  HWaddr 00:08:9B:F3:47:92
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:119377 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48464 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:147757495 (140.9 MiB)  TX bytes:11983577 (11.4 MiB)

eth1      Link encap:Ethernet  HWaddr 00:08:9B:F3:47:93
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:82668 errors:0 dropped:0 overruns:0 frame:0
          TX packets:82668 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:38311769 (36.5 MiB)  TX bytes:38311769 (36.5 MiB)

lxcbr0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          inet addr:10.0.3.1  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:114 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:6828 (6.6 KiB)  TX bytes:8221 (8.0 KiB)

W obecnej chwili container station jest w zasadzie bezużyteczne. Może ktoś z forumowiczów ma pomysł, jak podejść do rozwiązania - mnie skończyły się pomysły.
 
Sprawdziłem interfejsy dockera:

Kod:
[/etc/init.d] # docker network ls
NETWORK ID          NAME                DRIVER
10330a1c188f        bridge              bridge
03d44b181de4        none                null
cde24ce43987        host                host

oraz

Kod:
[/etc/init.d] # docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "10330a1c188ffffcd299ef3f3f2ce85942881d8b706a6e4074ab1730430143ef",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Config": [
                {
                    "Subnet": "10.0.3.1/24",
                    "Gateway": "10.0.3.1"
                }
            ]
        },
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "false",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "lxcbr0",
            "com.docker.network.driver.mtu": "1500"
        }
    }
]

Kiedy testowo uruchomiłem
Kod:
 docker run --rm -it ubuntu /bin/bash

to widać, że kontener korzysta z sieci bridge. Natomiast wydaje mi się, że flaga "com.docker.network.bridge.enable_ip_masquerade" powinna być ustawiona na true. Chciałbym to jakoś przestawić, ale skrypt container_station.sh jest dość złożony, jak na moją znajomość basha. Poza tym wartość tej flagi może też wynikać z tych problemów z iptables, które widać w poprzednim poście. Jakieś inne pomysły?
I dzięki za dotychczasowe wskazówki.
 
bez maskarady nie bedziesz miał wyjścia na świat
ale jak to zmienić nie mam pojęcia - może podmień w to pliku konfig. a potem zrestartuj usługę za pomocą /etc/init.d/container-station.sh restart
 
Ok, czyli to może być powód problemu. A wiesz gdzie znajdę plik konfiguracyjny dla dockera? Bo na NASie jest to chyba inna lokalizacja niż w standardowych instalacjach dockera.
 
Udało mi się znaleźć rozwiązanie. Problem faktycznie był związany z iptables. Brakowało niezbędnych modułów - zgodnie z krótką wzmianką ze strony iptables - Page 5 - QNAP NAS Community Forum najłatwiejszym sposobem na doinstalowanie tych modułów jest uruchomienie serwera vpn z panelu administratora. Po jego uruchomieniu i restarcie container-station, sieć jest dostępna w kontenerach, a błędy iptables nie pojawiają się.

Analizuję teraz skrypt startowy vpn, żeby przenieść kod ładujący moduły do skryptu container station. A to dlatego, że po wyłączeniu vpn i restarcie problem powraca.

Co ciekawe flaga "com.docker.network.bridge.enable_ip_masquerade" dalej ma wartość false, co nie wydaje się w czymkolwiek przeszkadzać.

W każdym razie problem można uznać za rozwiązany. Dzięki za pomoc.
 
  • Wow
Reakcje: Paweł Tołoczko

Użytkownicy znaleźli tą stronę używając tych słów:

  1. docker sieć