![](/img/trans.png)
[英]Docker Compose Set Linux Docker Host IP Address in Container's /etc/hosts
[英]Map host's /etc/hosts in a Docker container having bridge networking
我有一台主机,在其/ etc / hosts文件中定义了一些主机分辨率。
在这台机器上,我正在运行配置有网桥网络的Docker容器。
由于我不在主机网络上,因此我的Docker容器无法访问我的机器/ etc / hosts文件的主机定义。
不幸的是,目前无法选择DNS。
我的问题是如何通过网桥网络在容器中使用这些定义? 我读到在容器中安装主机/ etc / hosts文件不是一个好选择,因为这是由docker deamon内部处理的。
你知道我还能怎么做到吗?
我认为最好使用--add-host
的命令行选项将条目添加到容器的/etc/hosts
中。
这是官方Docker Reference的摘录
管理
/etc/hosts
您的容器将在/ etc / hosts中包含几行,这些行定义了容器本身的主机名以及localhost和其他一些常见的东西。 --add-host标志可用于向/ etc / hosts添加其他行。
$ docker run -it --add-host db-static:86.75.30.9 ubuntu cat /etc/hosts 172.17.0.22 09d03f76bf2c fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback 86.75.30.9 db-static
您有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)您要确保不要在每个容器引导程序上都重复此操作,因此请写一个信号量或类似内容(一个文件,无论如何检查文件)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.