docker0

当每启动一个docker 容器时,docker 就会给docker容器分配一个IP,只要安装了Docker服务,就会生成一个docker0网卡,用于桥接。使用veth-pair技术。
图片.png
图片.png
当每创建一个docker容器时,都会使用veth-pair 技术生成一对网卡,一端连着协议,一端彼此相连。正因为veth-pair的特性,用它来充当一个桥梁,使得容器之间可以通信。

测试tomcat01和tomcat02是否可以ping通

图片.png

tomcat01与tomcat02通信流程图

图片.png
结论:tomcat01与tomca02是公用的一个路由,docker0
所有的容器不指定网络情况下,都是由docker0路由的,docker会给每一个容器分配一个默认IP。

图片.png
docker中所有的网络接口都是虚拟的,虚拟的转发效率高,只要删除容器,对应的一对网卡随之消失。

—link

通过容器名来访问容器

  1. # tomcat03 使用 --link 参数指向tomcat02 即可使用 ping 容器名来通信
  2. # 但是 只是单向的 tomcat03 -->tomcat02
  3. [root@Box ~]# docker run -d -P --name tomcat03 --link tomcat02 tomcat
  4. 48b2da7790196c968f8ddb7c7d3f049a6fa62884ee7ef8454f0dddea1acdf777
  5. [root@Box ~]# docker exec -it tomcat03 ping tomcat02
  6. PING tomcat02 (172.17.0.3) 56(84) bytes of data.
  7. 64 bytes from tomcat02 (172.17.0.3): icmp_seq=1 ttl=64 time=0.123 ms
  8. 64 bytes from tomcat02 (172.17.0.3): icmp_seq=2 ttl=64 time=0.097 ms
  9. ^C
  10. --- tomcat02 ping statistics ---
  11. 2 packets transmitted, 2 received, 0% packet loss, time 14ms
  12. rtt min/avg/max/mdev = 0.097/0.110/0.123/0.013 ms
  13. # tomcat02 ---X-->tomcat03
  14. # 因为需要tomcat02 --link 指向 tomcat03
  15. [root@Box ~]# docker exec -it tomcat02 ping tomcat03
  16. ping: tomcat03: Name or service not known