我有一台主机,其/ etc / hosts文件中定义了一些主机解析。
在这台机器上,我正在运行配置了Bridge网络的Docker容器。
由于我不在主机网络上,因此我的Docker容器无法访问我的机器/ etc / hosts文件的主机定义
不幸的是,拥有DNS目前不是一种选择。
我的问题是如何使用桥接网络在容器中使用这些定义?我读到将容器中的hosts / etc / hosts文件挂载不是一个好选择,因为它是由docker deamon内部处理的。
你知道我还能做到这一点吗?
答案 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)你想确保你不要在每个容器引导程序上重复这个,所以写一个信号量或类似的(一个文件,检查文件)