docker-compose的启动会默认创建一个bridge类型的网络,当然它跟默认的bridge是继承关系。最近升级ide和docker后发现服务之间出现了个现象,服务能ping的通但是别名就不可以。而更改的地方就是网络模式network_mode 设置为了bridge。
原来当使用default bridge network的情况下,docker container使用宿主机的resolv.conf,当然不会解析服务名了。从1.10开始docker对自建的网络默认启用embedded dns,这个dns会自动更新新分配的服务。
docker network create mynet //不指定网络模式时默认是bridge
用mynet替换原先的bridge即可。如果在一个网络内可以用服务名来访问比如ping service_name,如果不是可以通过ping service_name.devnet