理解docker0
ip addr
#部署一个tomcat容器 查看容器内部网络地址
docker run -it -P --name tomcat01 tomcat:8.0 ip addr
每启动一个docker容器,docker 就会给每个容器分配一个ip,我们只要装了docker 就会有个网卡docker0桥接模式,使用的技术使evth-pair技术
![在这里插入图片描述](https://img-blog.csdnimg.cn/919c78a14e4e40dbb3e55ec458420577.png
docker run -it -P --name tomcat02 tomcat:8.0 /bin/bash
evth-pair 充当桥梁,连接各种虚拟网络设备
容器之间是可以相互ping 同的
docker 中的所有网络接口都是虚拟的,虚拟效率高
只要删除容器,对应网桥一对就没了
通过容器名字来访问容器
[root@iZwz9f559fa6a275jj2x0sZ ~]# docker exec -it 3827bc9215ce ping tomcat01
ping: unknown host tomcat01
#通过--link 解决
docker run -it -P --name tomcat03 --link tomcat02 tomcat:8.0
[root@iZwz9f559fa6a275jj2x0sZ ~]# docker exec -it d1867629c181 ping tomcat02
PING tomcat02 (172.17.0.3) 56(84) bytes of data.
64 bytes from tomcat02 (172.17.0.3): icmp_seq=1 ttl=64 time=0.113 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=2 ttl=64 time=0.074 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=3 ttl=64 time=0.076 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=4 ttl=64 time=0.078 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=5 ttl=64 time=0.075 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=6 ttl=64 time=0.087 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=7 ttl=64 time=0.082 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=8 ttl=64 time=0.078 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=9 ttl=64 time=0.077 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=10 ttl=64 time=0.074 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=11 ttl=64 time=0.075 ms
#通过tomcat02 ping tomcat03 是否可以
[root@iZwz9f559fa6a275jj2x0sZ ~]# docker exec -it tomcat02 ping tomcat03
ping: unknown host tomcat03
tomcat02 就是在本地配置tomcat02 的配置
#查看hosts 配置
[root@iZwz9f559fa6a275jj2x0sZ ~]# docker exec -it tomcat03 cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.3 tomcat02 3827bc9215ce
172.17.0.4 d1867629c181
#--link 在hosts 配置中加了一个172.17.0.3 tomcat02 3827bc9215ce
我们现在已经不建议使用–link
需要自定义网络,docker 0 不适用