一、虚拟网卡
1、网卡
网卡是一块可以使计算机网络之间通信的硬件设备,他拥有一个独一无二的MAC地址,这是在网卡被生产之出就已经写入网卡的ROM中,也就是说计算机网络中所有的计算机都有一个独一无二的MAC地址。当计算机在网络中间进行通信时,还需要绑定一个IP,也就是IP用来在网络中进行选址,但是IP是经常变动的,而MAC地址却是唯一不变的,所以我们可以通过IP去定位到某一个网络,然后再通过MAC地址去定位到具体的某一个设备,网络会给每个网卡分配一个IP地址,这个地址是可变的。可以通过ipconfig /all来查看网卡信息: 2、虚拟网卡
虚拟网卡技术就是从软件层面虚拟出一个网卡设备,目前的物理网卡基本上都支持虚拟化操作,那么虚拟出来的网卡也拥有自己的MAC地址,此时物理网卡就相当于一个交换机,虚拟网卡就相当于连接交换机的网络设备。
二、Docker中的网络
当我们安装好Docker之后,就会默认生成一个针对物理主机的虚拟网卡 当你用物理主机去ping这个网卡时发现是可以ping通的,也就是他们之间是可以通信的 前文,可知容器自身也有自己的一个网络,那么此时就会有个问题就是容器间又是怎么通信的呢?以及不同docker进程之间又是怎么通信的呢?
在其官方文档中有专门针对网络进行介绍,他有六种网络模式:
- bridge:桥接模式,默认是的模式,也就是当前的应用部署在一个独立的容器中,用于容器间通信
- host:可以使用主机的网络进行联网通信,但是不可以与主机中其他进行通信
- overlay:用于多个docker进程间的通信
- ipvlan:可以让用户完全控制IPV4和IPV6选址
- macvlan:可以针对容器分配MAC地址
- none:相当于禁用所有网络
接下来,就结合官方文档,进一步分析这几种网络模式。
1、bridge 桥接网络是在网段之间转发流量的链路层设备,在docker中网桥模式可以使连接到同一网桥的容器相互间通信,并且可以隔离未连接到相同网桥的其它容器,这也是docker默认的一个网络模式,也就是当启动容器的时候,不指定一个网络,就是默认是使用网桥模式(可以通过docker network ls来查看)。 可以发现当前只有三种模式,用户也可以自定义网桥通过docker network create命令来创建,具体可以参考官网中的docker network命令。 样例如下: 此时我们创建了一个网段为172.18.0.0的网络my-net,当前我们的容器运行了两个应用 此时,我们把新增加的网段添加到mydocker01这个容器上,当我们未添加时,两个容器都是用的bridge网段 添加之后,查看my-net网络时就会发现mydocker01容器已经使用了这个网络 并且可以正常访问应用 brige模式还可以在容器间根据容器名来进行访问,当我们想要访问数据库的时候,我们就可以根据部署数据库的容器名来访问,而不需要具体的ip地址。
2、host 如果容器使用的主机模式,那么容器不会产生一个ip地址,也就是容器会共享主机网络,如果你绑定了一个8080端口应用此时可以直接通过主机的ip+端口来访问,相对的,此时端口映射也会失效。
3、overlay
overlay模式主要是针对不同docker进程间的通信,当我们的数据库部署在不同的机器节点中,此时不同机器间的通信就需要overlay模式。这里就先不展开(需要用到docker swarm技术)
后续几个就不继续展开。
三、总结
本文简单介绍了docker中的一个网络环境,以及容器间的网络连接、docker集群中的网络连接等,更多的内容将在后续的学习中进行展开。
以上,有任何不对的地方请指正,谢谢!
|