如何解决容器中的docker主机名(/ etc / hosts)
如何解决在容器中的Docker主机的/ etc / hosts中定义的名字? 运行在我的Docker主机中的容器可以parsing公有名称(例如www.ibm.com),所以Docker的dns工作正常。 我想从容器中parsingDocker主机的名字(例如127.17.0.1 smtp)。
我的最终目标是从容器连接到在Docker主机(例如smtp服务器)中运行的服务。 我知道我可以使用容器中的Docker Host IP(127.17.0.1),但是我认为Docker会使用Docker主机/ etc / hosts来构build容器的parsing文件。
我甚至可以肯定,我已经看到了这个工作,但是我可能是错的。
有什么想法吗?
乔瓦尼
查看docker
命令的--add-host
标志: https : //docs.docker.com/engine/reference/run/#managing-etchosts
$ docker run --add-host="smtp:127.17.0.1" container command
在Docker中, /etc/hosts
在运行时不能被覆盖或修改(安全function)。 您需要使用Docker的API,在这种情况下,使用--add-host
来修改文件。
对于extra_hosts
docker-compose
,使用extra_hosts
选项。
对于整个“连接到主机上运行的服务”的问题,请参阅此GitHub问题中的讨论: https : //github.com/docker/docker/issues/1143 。
这个问题的常见方法是使用--add-host
与--add-host
的Docker的网关地址,例如--add-host="dockerhost:172.17.42.1"
。 检查上面的问题的一些脚本,find正确的IP,并启动您的容器。
你可以在主机上设置简单的DNS服务器,并在容器中设置/etc/resolve.conf到Docker主机的DNS服务器。
例如在dnsmasq中,您可以将addn-hosts=/etc/hosts
到configuration文件。 因此,通过使用Docker主机DNS服务器,容器将能够parsing主机/ etc / hosts。