Docker—— Docker 网络
Posted 玛丽莲茼蒿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker—— Docker 网络相关的知识,希望对你有一定的参考价值。
我们之前通过端口映射实现过外部主机对容器的访问,
那如果想要实现两个容器之间的通信怎么办?用已有的经验,是像图中蓝色的线那样走吗?
一、Docker0网络
我们运行一个容器,进入容器内部后发现容器也有自己的IP地址。
而且可以发现docker0的IP和容器的IP在同一个网段内(类似于路由器和连接到的路由器的终端),说明容器的IP是由docker0去分配的。
docker0的IP : 172.17.0.1
容器的IP :172.17.0.2
然后我们以Ctrl+p+q的方式,退出运行的容器, 让其在后台运行。此时在宿主机执行ip addr命令,发现容器的IP在宿主机也能查到。
此时,我们会想,那宿主机能ping通容器吗?
发现是能ping通的!
这是通过什么技术实现的呢?
evth-pair技术!我们可以发现,容器的网卡是成对出现的,下图中网卡6和网卡7作为一对。
我们再看宿主机显示的IP,发现6和7的位置颠倒过来了。
evth-pair就是一对虚拟设备接口,他们都是成对出现的,一端连接着协议,一端连接着彼此。
evth-pair充当一个桥梁,通过虚拟网卡连接起各种虚拟网络设备,宿主机和docker容器就是通过evth-pair连接的,docker容器和docker容器之间也是这样连接的。
所以docker容器之间也是可以互相ping通的!
但是docker容器之间的通信并不是像下图这样直接通信的
而是通过docker0(可以直接看作路由器)和evth-pair技术。如果容器B要ping容器C,需要先发到docker0上,再由docker0发给容器C。
此外,通过研究docker网络我们还发现,docker0的IP是172.17.0.1/16,这就说明docker最多开65535个容器。
Docker中的网卡都是虚拟的,开始容器后出现一对虚拟网卡,rm掉这个容器以后,网卡也就没了。
以上是关于Docker—— Docker 网络的主要内容,如果未能解决你的问题,请参考以下文章