将主机的/ etc / hosts映射到具有网桥的Docker容器中

我有一台主机,在其/ etc / hosts文件中定义了一些主机分辨率。

在这台机器上,我正在运行configuration了Bridgenetworking的Docker容器。
由于我不在主机networking上,因此我的Docker容器无法访问我的机器/ etc / hosts文件的主机定义。

不幸的是,有一个DNS目前不是一个选项。

我的问题是如何使用桥接networking在我的容器中使用这些定义? 我读了在容器中挂载hosts / etc / hosts文件不是一个好的select,因为这是由docker deamon内部处理的。
你知道我还能做到吗?

你有2个选项

docker run -v /etc/hosts:/etc/hosts <yourimage>

该选项的问题是,您的容器主机文件被覆盖,如果您想联系该docker-network中的任何其他服务,将会反弹。

所以我会这样做

docker run -v /etc/hosts:/tmp/hosts <yourimage>

在你的图像中使用一个入口点,在这些行之间做一些事情

cat /tmp/hosts >> /etc/hosts

a)你想过滤掉一些像localhost这样的行,或者使用grepselect特定的行。b)你要确保你不要在每个容器引导程序中重复这个,所以编写一个信号灯或类似的文件(一个文件,检查文件)