root@iZf8z4m0zzs3eoirsd64fvZ:~# ping 172.16.0.2 PING 172.16.0.2 (172.16.0.2) 56(84) bytes of data. 64 bytes from 172.16.0.2: icmp_seq=1 ttl=64 time=0.046 ms 64 bytes from 172.16.0.2: icmp_seq=2 ttl=64 time=0.048 ms 64 bytes from 172.16.0.2: icmp_seq=3 ttl=64 time=0.046 ms
Linux 可以 ping 通容器 我们每启动一个docker容器,docker 就会给 docker 容器分配一个 ip,我们只要安装了docker,就会有一个网卡docker0桥接模式,使用的技术是evth-pair
主机中Docker的内网地址172.16.0.1 容器中内网地址172.16.0.2
查看过容器之后,我们回到Linux,再次使用ip addr 发现多了一个
1 2 3 4
104: veth68a85b9@if2: mtu 1500 qdisc noqueue master docker0 state UP group default link/ether 32:28:55:e1:23:68 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet6 fe80::c05d:c8ff:fe40:159d/64 scope link valid_lft forever preferred_lft forever
我们和之前容器里的对比一下
1 2 3 4
2: eth0@if104: mtu 1500 qdisc noqueue state UP group default link/ether e2:1e:66:14:2a:3b brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.16.0.2/24 brd 172.16.0.255 scope global eth0 valid_lft forever preferred_lft forever
发现都是104,这两个很像啊(警撅
我们再启动一个测试一下
1 2 3 4 5 6
$ docker run -d -P --name tomcat02 tomcat $ docker exec -it tomcat02 ip addr 2: eth0@if105: mtu 1500 qdisc noqueue state UP group default link/ether 22:2f:74:cd:49:fd brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.16.0.3/24 brd 172.16.0.255 scope global eth0 valid_lft forever preferred_lft forever
我们回到主机也查看一下
1 2 3 4 5
$ ip addr 105: veth1fe5858@if2: mtu 1500 qdisc noqueue master docker0 state UP group default link/ether e6:ce:78:85:15:79 brd ff:ff:ff:ff:ff:ff link-netnsid 1 inet6 fe80::e4ce:78ff:fe85:1579/64 scope link valid_lft forever preferred_lft forever
$ docker exec -it tomcat-net-01 ping **tomcat**-net-02 PING tomcat-net-02 (192.168.0.3) 56(84)bytes of data. 64 bytes from tomcat-net-02.mynet (192.168.0.3):icmp_seq=1 ttl=64 time=0.055 ms 64 bytes from tomcat-net-02.mynet (192.168.0.3):icmp_seq=2 ttl=64 time=0.063 ms 64 bytes from ttl=64 time=0.073 ms