引言

思考一个场景,我们编写了一个微服务,database url = ip。项目不重启,数据库的ip地址换了,我们希望能够处理这个问题,能够根据名字访问吗?

直接ping名字

docker exec -it d9622d423a5c ping tomcat01
image.png
显然是行不通的

创建容器时就直接link

docker exec -d -P —name tomcat02 —link tomcat01 tomcat
image.png
tomcat02显然是能够ping通tomcat01,那反过来是否依然能够奏效呢?
docker exec -it tomcat01 ping tomcat02
image.png
显然是不能的

我们探究link的原理

其实tomcat02是不是在本地配置了tomcat01的配置 ?——>所以我们去tomcat02的本地配置去看
docker exec -it tomcat02 cat /etc/hosts
image.png
本质:—link就是在tomcat02的本地hosts配置上增加了一个172.17.0.3 tomcat01 64fb309dc9bb的映射,所以我们能通过名字ping通tomac01,而下面的172.17.0.4 c9ecd68e4c0d没有增加名字,所以无法通过名字ping通

总结

实际开发中,我们已经很少用—link来满足我们想要实现名字ping通的要求了。
所以引入自定义网络