Não é possível gravar no arquivo / etc / hosts do Dockerfile com RUN

8

Estou fazendo uma imagem docker usando um Dockerfile bem simples. Dentro do Dockerfile eu tenho este comando:

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

O comando em si parece estar OK, já que a criação da imagem não pára neste ponto.

O problema é o seguinte: ao executar a imagem, a linha que deveria ter sido inserida dentro de "/ etc / hosts" não está lá.

Agora, pesquisei e descobri que, antes da versão 1.2 do Docker, havia um problema com o arquivo hosts dentro dos contêineres. No meu caso, estou usando a versão 1.5, a mais recente a partir deste momento.

Estou faltando alguma coisa?

UPDATE 1:

Parece haver muitos problemas para isso, abertos e fechados, nas páginas do github do Docker.

    
por dsljanus 01.04.2015 / 09:12

2 respostas

7

Depois de escrever a atualização da minha pergunta, decidi dar mais uma olhada nos "problemas" abertos no github. Acontece que uma solução alternativa foi implementada:

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

Usando o argumento "--add-host ..." ao iniciar um container, é possível modificar o arquivo hosts.

    
por 01.04.2015 / 11:32
11

Isso funciona no docker 1.7.0

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

O truque é adicionar o nome do host na mesma linha que você usa, caso contrário, o arquivo de hosts será redefinido, pois cada comando RUN inicia um novo contêiner intermediário. Por exemplo, isso não funcionará :

RUN echo "192.168.11.112 myhost" >> /etc/hosts
RUN wget http://myhost
    
por 14.07.2015 / 15:13