Impossibile scrivere nel file / etc / hosts da Dockerfile con RUN


9

Sto creando un'immagine docker usando un Dockerfile piuttosto semplice. All'interno del Dockerfile ho questo comando:

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

Il comando stesso sembra essere OK, poiché la creazione dell'immagine non si ferma a questo punto.

Il problema è questo: quando si esegue l'immagine, la riga che dovrebbe essere stata inserita all'interno di "/ etc / hosts" non è presente.

Ora, ho cercato e scoperto che prima della versione 1.2 della finestra mobile, c'era un problema con il file hosts all'interno dei contenitori. Nel mio caso, sto usando la versione 1.5, l'ultima al momento.

Mi sto perdendo qualcosa?

AGGIORNAMENTO 1:

Sembra che ci siano molti problemi per questo, sia aperti che chiusi, nelle pagine github di Docker.

Risposte:


12

Funziona su docker 1.7.0

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

Il trucco è aggiungere il nome host sulla stessa riga in cui lo si utilizza, altrimenti il ​​file hosts verrà ripristinato, poiché ogni comando RUN avvia un nuovo contenitore intermedio. Ad esempio, questo non funzionerà :

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

1
Grazie per la comprensione! Sebbene sia corretto (ho controllato) e utile in generale, in questo caso non mi è di alcuna utilità. Ho bisogno che il file "hosts" sia popolato quando il container viene eseguito.
dlyk1988,

2
+1 per l'esecuzione di comandi sulla stessa riga
myol

7

Dopo aver scritto l'aggiornamento alla mia domanda, ho deciso di dare un'altra occhiata ai "problemi" aperti in github. Si scopre che è stata implementata una soluzione alternativa:

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

Utilizzando l'argomento "--add-host ..." all'avvio di un contenitore è possibile modificare il file hosts.


5
Voglio essere in grado di farlo nella build però. La persona che esegue il contenitore non dovrebbe conoscere gli host interni. Non ha senso!
samsamm777,

Iho eco @ samsamm777. Ti chiedi se esiste un buon modo per farlo?
Jonathan,

Questo è davvero un comportamento molto sorprendente, che non è mai una buona idea nei sistemi IT.
Torsten Bronger,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.