Docker, kapların içindeki /etc/resolv.conf dosyamı geçersiz kılıyor


17

resin/rpi-raspbian:jessieKapsayıcımı şu /etc/resolv.confşekilde ayarlamak istiyorum :

nameserver 208.67.222.222
nameserver 208.67.220.220

Dockerfile dosyamda şu satır var:

ADD resolv.conf /etc/resolv.conf

Eklenen bu dosya doğru ad sunucularını içeriyor.

Docker ana bilgisayarım /etc/resolv.confdoğru bilgileri içeriyor.

Ben kabı şu şekilde çalıştırıyorum:

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

Tüm bunlara rağmen, konteyner bu çıktıyı verir:

root@642b0f4716ba:/# cat /etc/resolv.conf
nameserver 127.0.0.11
options ndots:0

Ben sadece resolv.conf konteyner içinde (veya docker exec ile) el ile doğru göründükten sonra değiştirdikten sonra.

Bir exec komutu ile düzeltmek zorunda kalmayı tercih ederim. Burada neler olduğu hakkında bir fikri olan var mı?


Wiki'lerinde durumunuzu açıklayabilecek birkaç vaka açıklanmıştır .
Julie Pelletier

Soruma ve cevabına bir göz atın .
Zeinab Abbasimazar

Yanıtlar:


14

AFAIK, docker, bir resim başladığında , Dockerfile'a EKLendiyse bile bazı dosyaları geçersiz kılar . Bu kesin olarak içerir /etc/hostsve muhtemelen aynı şey /etc/resolv.confde olur . Görünüşe göre Docker'ın varsayılan "dahili" ağını düzgün bir şekilde oluşturmak için kullanılıyor (böylece görüntüler birbirini görüyor, ancak ana bilgisayar değil, vb.) Bu dosyaların bazılarını geçersiz kılmak / değiştirmek istediğinizden gerçekten eminseniz , bunu çalışma zamanı eylemlerinin bir parçası olarak, yani CMDsatırın bir parçası olarak yapın . Örneğin:

...
ADD resolv.conf /etc/resolv.conf.override
CMD cp /etc/resolv.conf.override /etc/resolv.conf && \
        your_old_commands...

3
Doğru. /etc/resolv.confbir kapsayıcı başlatıldığında ana bilgisayardan kopyalanır.
wisbucky

4

Gördüğüm gibi kullandığınızı user-defined networksve Docker Engine sürüm> = 1.10. Yani, aşağıdaki docker motoru belgelerinden Embedded DNS server in user-defined networks:

Bu --dns IP adresleri katıştırılmış DNS sunucusu tarafından yönetilir ve kabın /etc/resolv.conf dosyasında güncelleştirilmez.

DNS'nizin çalışması gerekiyor, ancak herhangi bir yapılandırma dosyasında görmeyeceksiniz.

Kaynaklar .


0

Azure'daki kapsayıcılar için web uygulamasıysa sorunu çözdüm.

Orada 2 konteyner arkadaşı . Kudu ve ev sahibi

adımlar

1.Ssh'ı docker dosyanızdan yükleyin (ayrıca bir sshd yapılandırması ekleyin)

2. bir containertart.sh dosyası oluşturun (resolv.conf dosyasını güncelleştirir)

3.İçindeki giriş noktasını ayarlayın

Artık ana bilgisayar resolv.conf güncellenir ve istediğiniz dns'i kullanabilirsiniz

Not: Ağdaki özel DNS'yi alamıyorsanız endişelenmeyin. Biz de yapamadık. ASE ortamı kullanıyorsanız sıfırlamanız gerekebilir

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.