如何在Docker容器中使root/etc/hosts可写?

use*_*205 22 docker

我是新手使用docker并配置容器.
我无法编辑/ etc/hosts(但需要我正在开发的一些软件).自动编辑(通过sudo或root)文件在只读文件系统上显示它.手动(vim)编辑文件说它是只读的,我无法以root身份保存更改(文件权限是rw for owner(root)).

但是,我可以修改其他文件并在/ etc中添加文件.

这有什么理由吗?

我可以更改Docker配置以允许编辑/ etc/hosts吗?

谢谢

ale*_*dbf 17

更新2014-09

见@Thomas答案:

/ etc/hosts现在可以从Docker 1.2开始写入.

原始答案

你可以同时使用这个hack

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

在你的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


Tho*_*mas 8

/etc/hosts 从Docker 1.2开始,它现在可写了.

来自Docker的博客:

但请注意,在docker构建期间不会保存对这些文件的更改,因此不会在生成的图像中保留对这些文件的更改.这些更改只会"粘贴"在正在运行的容器中.


jpe*_*zzo 4

这是目前 Docker 的技术限制,可在https://github.com/dotcloud/docker/issues/2267进一步讨论。

它最终会被解除。

目前,您需要解决这个问题,例如使用自定义dnsmasq服务器。