Docker----容器名互联link技术及其本质

网友投稿 247 2022-10-20

Docker----容器名互联link技术及其本质

(1)创建名centos1的docker

docker

创建后查看ip,如下:172.17.0.3

[root@iZbp1flzt6x7pxmxfhmxeeZ ~]# docker run -it --name centos1 centos[root@52a8e3445ba0 /]# ip addr1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever210: eth0@if211: mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0 valid_lft forever preferred_lft forever[root@52a8e3445ba0 /]#

(2)创景名centos2 的docker

docker

创建后查看ip,如下:172.17.0.5

[root@iZbp1flzt6x7pxmxfhmxeeZ ~]# docker run -it --name centos2 centos[root@ffd80ec46a5d /]# ip addr1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever212: eth0@if213: mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:05 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.17.0.5/16 brd 172.17.255.255 scope global eth0 valid_lft forever preferred_lft forever[root@ffd80ec46a5d /]#

(3)在centos2中分别使用ip和docker名pingcentos1

如下,可以发现,centos2的容器可以ping通centos1的ip,但是无法ping通centos1的容器名

[root@ffd80ec46a5d /]# ping 172.17.0.3 -c 3PING 172.17.0.3 (172.17.0.3) 56(84) bytes of data.64 bytes from 172.17.0.3: icmp_seq=1 ttl=64 time=0.095 ms64 bytes from 172.17.0.3: icmp_seq=2 ttl=64 time=0.085 ms64 bytes from 172.17.0.3: icmp_seq=3 ttl=64 time=0.073 ms--- 172.17.0.3 ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2000msrtt min/avg/max/mdev = 0.073/0.084/0.095/0.011 ms[root@ffd80ec46a5d /]#[root@ffd80ec46a5d /]#[root@ffd80ec46a5d /]# ping centos1 -c 3ping: centos1: Name or service not known[root@ffd80ec46a5d /]#

(4)使用–link 创建名centos3的容器,关联centos2

docker

创建后查看ip,如:172.17.0.6

[root@iZbp1flzt6x7pxmxfhmxeeZ ~]# docker run -it --name centos3 --link centos2 centos[root@3cec093832ce /]# ip addr1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever214: eth0@if215: mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:06 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.17.0.6/16 brd 172.17.255.255 scope global eth0 valid_lft forever preferred_lft forever[root@3cec093832ce /]#

(5)在centos3 的容器中分别ping容器centos2的ip和容器名

如下可以发现,此时centos3的容器中可以通过centos2的容器名ping通,这就是–link技术

[root@3cec093832ce /]# ping 172.17.0.5 -c 3PING 172.17.0.5 (172.17.0.5) 56(84) bytes of data.64 bytes from 172.17.0.5: icmp_seq=1 ttl=64 time=0.102 ms64 bytes from 172.17.0.5: icmp_seq=2 ttl=64 time=0.065 ms64 bytes from 172.17.0.5: icmp_seq=3 ttl=64 time=0.062 ms--- 172.17.0.5 ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2000msrtt min/avg/max/mdev = 0.062/0.076/0.102/0.019 ms[root@3cec093832ce /]#[root@3cec093832ce /]#[root@3cec093832ce /]# ping centos2 -c 3PING centos2 (172.17.0.5) 56(84) bytes of data.64 bytes from centos2 (172.17.0.5): icmp_seq=1 ttl=64 time=0.075 ms64 bytes from centos2 (172.17.0.5): icmp_seq=2 ttl=64 time=0.071 ms64 bytes from centos2 (172.17.0.5): icmp_seq=3 ttl=64 time=0.062 ms--- centos2 ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2000msrtt min/avg/max/mdev = 0.062/0.069/0.075/0.008 ms[root@3cec093832ce /]#

(6)容器–link技术的作用

–link技术可以通过容器名访问容器,这就解决了每次启动容器的时候容器的ip都是随机生成的而访问的时候不需要关注随机改变的ip的问题

(7)容器–link技术的本质

在centos3容器中执行如下命令,可以看到–link技术的本质就是在hosts文件中对ip地址进行了设置,这样通过访问容器名的时候自动解析到对应的ip地址

[root@3cec093832ce /]# cat /etc/hosts127.0.0.1 localhost::1 localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters172.17.0.5 centos2 ffd80ec46a5d172.17.0.6 3cec093832ce[root@3cec093832ce /]#

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java中的随机数Random
下一篇:Docker----Docker自定义网络
相关文章

 发表评论

暂时没有评论,来抢沙发吧~