Docker无法解析主机名

Mun*_*kin 4 docker docker-compose docker-networking

我需要知道在同一台机器上运行的某个容器的主机名(或IP地址).正如我已在此处评论(但尚无答案),我使用了docker-compose.该文件称,谱写会自动创建在同一定义的所有容器中的主机名条目docker-compose.yml文件:

服务的每个容器都加入默认网络,并且该网络上的其他容器都可以访问它们,并且它们可以在与容器名称相同的主机名上发现.

但我看不到任何主持人通过docker exec -it my_container tail -20 /etc/hosts.我也尝试添加links到我的容器中,但没有任何改变.

Mat*_*att 6

Docker 1.10引入了一些新的网络功能,其中包括一个 内部DNS服务器,用于完成主机查找.

在默认桥接网络(docker0)上,查找继续按/etc/hosts原样运行./etc/resolv.conf将指向您的主机解析器.

在用户定义的网络上,Docker将使用内部DNS服务器./etc/resolv.conf将具有Docker DNS服务器的内部IP地址.此设置允许桥接,自定义和覆盖网络以类似的方式工作.因此,swarm上的覆盖网络将像本地网桥一样从群组中填充主机数据.

维护了"遗留"设置,因此可以在不影响现有设置的情况下引入新的网络功能.

发现

DNS解析器能够通过该服务的名称为docker compose服务提供IP.

例如,如果定义了a webdb服务,并且db服务扩展为3,则所有db实例都将解析:

$ docker-compose run --rm web nslookup db

Name:      db
Address 1: 172.22.0.4 composenetworks_db_2.composenetworks_mynet
Address 2: 172.22.0.5 composenetworks_db_3.composenetworks_mynet
Address 3: 172.22.0.3 composenetworks_db_1.composenetworks_mynet
Run Code Online (Sandbox Code Playgroud)

  • 你可能想用“--rm”来运行它,或者最终得到一堆你不想留下来的容器 (3认同)