Modificar o arquivo hosts no dockerfile

Eu tenho um Dockerfile com instrução RUN para modificar o arquivo / etc / hosts, mas não funciona.

FROM dockerhub.mydomain.com/sometag/java8MAINTAINER itsmeADD some-java-app.jar app.jarADD hosts tmp/ENV PATH=/opt/java/bin:$PATHRUN cat /tmp/hosts >> /etc/hostsCMD ["java",\    "-Djava.security.egd=file:/dev/./urandom",\    "-jar",\    "/app.jar"]

Em hosts arquivo que é copiado para / tmp na imagem do docker, há nomes e IPs de hosts adicionais. Eu quero cat que /tmp/hosts para /etc/hosts mas depois de construir imagem /etc/hosts não é modificado.

Como modificar este arquivo corretamente?EDIT: estou tentando usar tee comando, mas enquanto a imagem é construir conteúdo de /tmp/hosts é ecoado para console, não para /etc/hosts.

RUN bash -c 'cat /tmp/hosts | tee -a /etc/hosts'

Parece que | ou >> não funciona no Dockerfile.

Docker cria /etc/hosts arquivo enquanto o contêiner é iniciado. É por isso que minhas modificações de /etc/hosts o arquivo é substituído. Posso alterar o arquivo hosts dinamicamente, por meio do comando CMD.

FROM dockerhub.mydomain.com/sometag/java8MAINTAINER itsmeADD some-java-app.jar app.jarADD hosts tmp/ENV PATH=/opt/java/bin:$PATHCMD cat /tmp/hosts >> /etc/hosts; java -Djava.security.egd=file:/dev/./urandom -jar /app.jar; cat /etc/hosts

Os últimos comandos mostram as alterações feitas pelo primeiro comando na linha CMD.

Eu acho que se você quiser importar um arquivo, você deve usar o copy função e não add - adicione se você estiver recebendo de um URL ou importando um arquivo.

docker dá isso como um exemplo:

COPY requirements.txt /tmp/RUN pip install --requirement /tmp/requirements.txtCOPY . /tmp/

então, no seu exemplo, isso deve funcionar

COPY hosts /tmp/ENV PATH=/opt/java/bin:$PATHRUN cat /tmp/hosts >> /etc/hosts