How can I make /etc/hosts writable by root in a Docker Container?

后端 未结 4 544
花落未央
花落未央 2021-01-31 18:43

I\'m new to using docker and am configuring a container.
I am unable to edit /etc/hosts (but need to for some software I\'m developing). Auto-edit (via sudo or root) of the

相关标签:
4条回答
  • 2021-01-31 19:15

    I have recently stumbled upon a need to add an entry into /etc/hosts file as well (in order to make sendmail working).

    I ended up making it part of the Dockerfile's CMD declaration like this:

    CMD echo "127.0.0.1 noreply.example.com $(hostname)" >> /etc/hosts \
        && sendmailconfig \
        && cron -f
    

    So it effectively is not a part of the image, but it is always available after creating a container from the image.

    0 讨论(0)
  • 2021-01-31 19:31

    UPDATE 2014-09

    See @Thomas answer:

    /etc/hosts is now writable as of Docker 1.2.

    Original answer

    You can use this hack in the meanwhile

    https://unix.stackexchange.com/questions/57459/how-can-i-override-the-etc-hosts-file-at-user-level

    In your Dockerfile:

    
    ADD your_hosts_file /tmp/hosts
    RUN mkdir -p -- /lib-override && cp /lib/x86_64-linux-gnu/libnss_files.so.2 /lib-override
    RUN perl -pi -e 's:/etc/hosts:/tmp/hosts:g' /lib-override/libnss_files.so.2
    ENV LD_LIBRARY_PATH /lib-override
    

    0 讨论(0)
  • 2021-01-31 19:33

    /etc/hosts is now writable as of Docker 1.2.

    From Docker's blog:

    Note, however, that changes to these files are not saved during a docker build and so will not be preserved in the resulting image. The changes will only “stick” in a running container.

    0 讨论(0)
  • 2021-01-31 19:35

    This is currently a technical limitation of Docker, and is discussed further at https://github.com/dotcloud/docker/issues/2267.

    It will eventually be lifted.

    For now, you need to work around it, e.g. by using a custom dnsmasq server.

    0 讨论(0)
提交回复
热议问题