Chcę ustawić mój resin/rpi-raspbian:jessie
kontener /etc/resolv.conf
na:
nameserver 208.67.222.222
nameserver 208.67.220.220
Mój plik Docker ma następujący wiersz:
ADD resolv.conf /etc/resolv.conf
Ten dodany plik zawiera prawidłowe serwery nazw.
Host mojego Dockera /etc/resolv.conf
zawiera prawidłowe informacje.
Korzystam z kontenera w następujący sposób:
docker run -itd --cap-add=NET_ADMIN --device /dev/net/tun \
-v /home/pi/share/ovpn:/ovpn \
--privileged --network=internet_disabled --name vpn-client \
--dns=208.67.222.222 \
openvpn-client_nat-gateway /bin/bash
Pomimo tego wszystkiego kontener daje następujące dane wyjściowe:
root@642b0f4716ba:/# cat /etc/resolv.conf
nameserver 127.0.0.11
options ndots:0
Dopiero po ręcznej zmianie pliku resolv.conf z poziomu kontenera (lub za pomocą exec dockera) wygląda to dobrze.
Wolałbym uniknąć konieczności naprawy za pomocą polecenia exec. Czy ktoś ma pomysł, co się tutaj dzieje?
Odpowiedzi:
AFAIK, okno dokowane zastępuje niektóre pliki na obrazie podczas jego uruchamiania , nawet jeśli zostały DODANE w Dockerfile. To z pewnością obejmuje
/etc/hosts
i najprawdopodobniej to samo dzieje się/etc/resolv.conf
również. Jest to najwyraźniej wykorzystywane do prawidłowego zbudowania domyślnej „wewnętrznej” sieci Dockera (aby obrazy się widziały, ale nie hosta itp.) Jeśli naprawdę jesteś pewien, że chcesz zastąpić / zmodyfikować niektóre z tych plików, uważam, że musisz rób to jako część działań środowiska wykonawczego, czyli jako częśćCMD
wiersza. Na przykład:źródło
/etc/resolv.conf
jest kopiowany z hosta po uruchomieniu kontenera.Jak widzę, używasz
user-defined networks
i Docker Engine wersja> = 1.10. Więc z oficjalnej dokumentacji silnika dokera oEmbedded DNS server in user-defined networks
:Twoje dns musi działać, ale nie zobaczysz w żadnym pliku konfiguracyjnym.
Odniesienia .
źródło
Rozwiązałem problem, jeśli jest to aplikacja internetowa dla kontenerów na platformie Azure.
Tam są 2 kontenery . Kudu i gospodarz
Kroki
1. Zainstaluj ssh z pliku dokera (dołącz także konfigurację sshd)
2. stwórz plik containerstart.sh (który aktualizuje resolv.conf)
3. Ustaw tam punkt wejścia
Teraz host resolv.conf zostaje zaktualizowany i możesz używać dowolnych dns
PS: Jeśli nie możesz odebrać niestandardowego DNS w sieci, nie martw się. My też nie mogliśmy. Może być konieczna ponowna konfiguracja, jeśli używasz środowiska ASE
źródło