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

时间:2017-01-03 09:51:24

标签: networking docker dns hosts

我有一台主机,其/ etc / hosts文件中定义了一些主机解析。

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

不幸的是,拥有DNS目前不是一种选择。

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

2 个答案:

答案 0 :(得分:3)

我认为使用schema_version的命令行选项将条目添加到容器的--add-host中可能会更好。

以下是ObjectID

的摘录
  

管理/etc/hosts

     

您的容器将在/ etc / hosts中包含定义主机名的行   容器本身以及localhost和其他一些常见的   的东西。 --add-host标志可用于添加其他行   的/ etc /主机。

/etc/hosts

答案 1 :(得分:2)

您有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这样的行,或者使用grep选择特定的行 b)你想确保你不要在每个容器引导程序上重复这个,所以写一个信号量或类似的(一个文件,检查文件)