Estou fazendo uma imagem docker usando um Dockerfile bastante 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 é este: ao executar a imagem, a linha que supostamente foi 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 a perder alguma coisa?
Atualização 1:
Parece haver muitos problemas para isso, abertos e fechados, nas páginas do github do docker.
RUN echo "192.168.11.112 myhost" >> /etc/hosts && wget http://myhost
O truque é adicionar o nome do host na mesma linha que você o usa, caso contrário, o arquivo 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/hostsRUN wget http://myhost
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 " -- add-host..."argumento ao iniciar um contêiner, é possível modificar o arquivo hosts.