Cannot write to /etc/hosts file from Dockerfile with RUN

I am making a docker image using a pretty simple Dockerfile. Inside the Dockerfile I have this command:

RUN printf " \n" >> /etc/hosts

The command itself seems to be OK, since creation of the image does not halt at this point.

The issue is this: When running the image, the line that is supposed to have been inserted inside "/etc/hosts" is not there.

Now, I searched around and found out that before version 1.2 of docker, there was an issue with the hosts file inside the containers. In my case, I am using version 1.5, the latest as of this moment.

Am I missing something?


There seem to be a lot of issues for this, both open and closed, in docker's github pages.

This works on docker 1.7.0

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

The trick is to add the hostname on the same line as you use it, otherwise the hosts file will get reset, since every RUN command starts a new intermediate container. For example, this will not work:

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

After writing the update to my question I decided to take one more hard look at the "issues" opened in github. Turns out, a workaround has been implemented:

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

Using the "--add-host..." argument when starting a container it is possible to modify the hosts file.