从主机访问容器的主机名

我有一些联合单个docker覆盖networking的docker集装箱。 在这个networking下,每个容器都通过主机名(容器)进行访问。 但我无法通过host-mashine(我的真实主机)的主机名访问容器。

如何通过我的真实机器的docker容器主机名访问容器?

你可以通过启动你自己的DNSparsing器容器来做到这一点。

docker run -d --name devdns -p 53:53/udp \ -v /var/run/docker.sock:/var/run/docker.sock ruudud/devdns 

一旦你运行了DNS服务器。 服务器映射到您的本地主机。 在linux上,你可以编辑/etc/resolv.conf并在顶部添加nameserver 127.0.0.1 。 重新启动后,此更改将被恢复。

现在,如果你启动一个docker集装箱

 docker run -d --hostname tarunlalwani --name tlalwani ubuntu:16.04 sleep 2000 

现在,您可以使用容器名称或主机名称来ping容器

 $ ping tlalwani.dev PING tlalwani.dev (172.17.0.6) 56(84) bytes of data. 64 bytes from 172.17.0.6: icmp_seq=1 ttl=64 time=0.030 ms $ ping tarunlalwani.dev PING tarunlalwani.dev (172.17.0.1) 56(84) bytes of data. 64 bytes from 172.17.0.1: icmp_seq=1 ttl=64 time=0.026 ms 

dev是默认的域名。 你可以使用环境variables来改变它。 有关更多详细信息,请参阅https://github.com/ruudud/devdns

您可以简单地将127.0.0.1 <hostname_inside_docker>添加到您的hosts文件(在本地计算机上)