上次介绍了默认的网络Bridge,连接到docker0之后还可以跟外界进行通信,查看docker之间的关系link。上节生成了test1和test2,test1和test2之前可以通过ip地址的房还是进行通信的。
场景
如果创建2个容器,一个mysql容器,一个tomcat容器,tomcat容器内后台应用,需要访问mysql数据库容器,按照上节的原理,我需要先进入mysql的容器中查看mysql的ip地址,然后在在tomcat容器的应用中修改程序里面的数据库连接地址才可以完成应用的连接。这样是不是很麻烦。 其实还有一种link的方式可以让应用通信变的简单
启动test1 和test2
停止test2,删除test2
加入link创建test2
通过link test1 也就是直接把test1 告诉给test2的ip地址,直接可以通过test1的容器名字,直接找test1
反过来我在test1里面直接ping test2咱们试试
上节课通过docker network ls 可以看到一个bridge host none
我们自己创建一个bridge,让容器直接绑定新的bridge
之前都是172.17 这里的是172.18
问题来了,一个17,一个18网段如何让17网段的容器 可以连接在新的18网段上呢
我们在test3上尝试ping下test2 看能否ping通
是不是有点神奇,按照常理我不通过link不可以通过名称直接ping通test2,而这里我们成功的ping通了test2,这是为什么呢?我们test2和test3因为都连接了用户自己创建的bridge上,这2个默认就是连接好的,可以直接通过名称。咱们在试试通过test2来ping test3试试.
PS:用户自定义的bridge 和 docker0 这个bridge他们之前的区别,docker0 如果通过名称想找到需要通过link,实际的项目中很少使用link,其实让大家知道link这个命令。
领取专属 10元无门槛券
私享最新 技术干货