RUN ile Dockerfile dosyasından / etc / hosts dosyasına yazılamıyor


9

Oldukça basit bir Dockerfile kullanarak bir docker görüntüsü yapıyorum. Dockerfile içinde bu komut var:

RUN printf "192.92.13.243 www.hahaha.com \n" >> /etc/hosts

Komutun kendisi iyi görünüyor, çünkü görüntünün oluşturulması bu noktada durmuyor.

Sorun şudur: Resmi çalıştırırken, "/ etc / hosts" içine eklenmesi gereken satır orada değildir.

Şimdi araştırdım ve docker'ın 1.2 sürümünden önce, kapların içindeki hosts dosyasında bir sorun olduğunu öğrendim. Benim durumumda, bu andan itibaren en son 1.5 sürümünü kullanıyorum.

Bir şey mi kaçırıyorum?

GÜNCELLEME 1:

Bunun için liman işçisinin github sayfalarında hem açık hem de kapalı birçok sorun var.

Yanıtlar:


12

Bu docker 1.7.0 üzerinde çalışır

RUN echo "192.168.11.112 myhost" >> /etc/hosts && wget http://myhost

İşin püf noktası, ana makine adını kullandığınız satıra eklemektir, aksi takdirde her RUN komutu yeni bir ara kapsayıcı başlattığından hosts dosyası sıfırlanır. Örneğin, bu işe yaramaz :

RUN echo "192.168.11.112 myhost" >> /etc/hosts
RUN wget http://myhost

1
İçgörü için teşekkürler! Doğru (kontrol ettim) ve genel olarak kullanışlı olmasına rağmen, bu durumda benim için gerçek bir faydası yoktur. Kap çalıştırıldığında doldurulması gereken "hosts" dosyasına ihtiyacım var.
dlyk1988

7

Güncellemeyi soruma yazdıktan sonra github'da açılan "sorunlara" bir kez daha bakmaya karar verdim. Görünen o ki, bir çözüm uygulandı:

docker run ... --add-host='server:0.0.0.0' ...

Bir kapsayıcı başlatılırken "--add host ..." bağımsız değişkenini kullanarak hosts dosyasını değiştirmek mümkündür.


5
Ama bunu yapıda yapabilmek istiyorum. Kapsayıcıyı çalıştıran kişinin dahili ana bilgisayarlar hakkında bilgi sahibi olması gerekmez. Sıfır mantıklı!
samsamm777

Ben samsamm777 yankı. Bunu yapmanın iyi bir yolu var mı acaba?
Jonathan

Bu gerçekten bir çok asla BT sistemlerinde iyi bir fikirdir şaşırtıcı davranış.
Torsten Bronger
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.