java系统找不到指定文件怎么解决
286
2022-10-21
Docker的网络模式
为了支持网络协议栈的多个实例,Linux在网络协议栈中引入了网络命名空间。这些独立的协议栈被隔离到不同的命名空间中。Docker正是利用了网络的命名空间特性,实现不同容器之间的网络隔离。
Docker的本地网络实现其实利用了Linux上的网络命名空间和虚拟网络设备。Linux的网络虚拟化是LXC项目中的一个子项目,LXC包括文件系统虚拟化、进程空间虚拟化、用户虚拟化、网络虚拟化等,Docker就是使用LXC的网络虚拟化来模拟多个网络环境。
Linux网络虚拟化的类型如下:
桥接:创建一个虚拟桥设备(网桥),网桥可以理解为一个软件交换机,负责挂载其上的接口之间进行包转发。隔离:仅将需要互相通信的虚拟机的后半段网卡添加到同一个虚拟的桥设备上,即可完成虚拟机之间的通信,且与外网仍旧是物理机隔离。路由:将虚拟机关联至虚拟桥设备上,再给桥设备配置一个与虚拟机同段的IP地址(内网地址)作为虚拟机的网关(物理网卡是连接外网的,所以应该与内网IP地址不是一个段),最后打开物理主机的核心转达功能,即可让虚拟机ping外部主机,但是外部主机无法发送相应包,因为外部主机没有到达虚拟机的路由。NAT:在路由模型的基础上,为其配置源地址转换(Source NAT,SNAT)规则,即可完成真正的虚拟机与外网通信,且自己使用的是内网地址。
Docker中的网络接口默认是虚拟接口,虚拟接口的最大优势是转发效率高。这是因为Linux通过在内核中进行数据复制来实现虚拟接口之间的数据转发,即发送接口的发送缓存中的数据包将直接复制到接收接口的接收缓存中,无须通过外部物理网络设备进行交换。
Linux虚拟化网络都是基于网络命名空间netns实现的,netns可以创建一个完全隔离的新网络环境,这个环境包括一个独立的网卡空间、路由表、ARP表、IP地址表、iptables等。总之,与网络有关的组件都是独立的。
Docker网络架构由3个主要部分构成:Container Network Model、Libnetwork 和驱动。Docker守护进程通过调用Libnetwork对外提供的API完成网络的创建和管理等功能;Libnetwork中则使用了Container Network Model来完成网络功能的提供;而Container Network Model中主要有沙盒(sandbox)、接入点(endpoint)和网络(network)3种组件。
Container Network Model模型包括3种基本组件。
沙盒:代表一个容器所在独立的网络栈(准确地说,是其网络命名空间),包括以太网接口、端口、路由表以及DNS配置。接入点:代表网络上可以挂载容器的虚拟接口,会分配IP地址。就像普通网络接入点一样,接入点主要负责创建连接;在Container Network Model模型中,接入点负责将沙盒连接到网络。网络:可以连通多个接入点的一个虚拟子网,是IEEE 802.1d网桥(虚拟交换机)的软件实现。
目前Container Network Model支持4种网络驱动类型:null、bridge、overlay、remote。不同网络驱动的特性简单说明如下:
null:不提供网络服务,容器启动后无网络连接。bridge:即Docker传统上默认用Linux网桥和iptables实现的单机网络。overlay:即用虚拟扩展局域网(Virtual eXtensible Local Area Network,VXLAN)隧道技术实现的跨宿主机容器网络。remote:扩展类型,预留给其他外部实现的方案,由第三方编写网络驱动,如Calico、Contiv、Kuryr、Weave等。
覆盖网络是理想的容器间通信方式,具备良好的网络伸缩性。Docker为覆盖网络提供了本地驱动,其背后是基于 Libnetwork 以及相应的overlay驱动来构建的,使得创建覆盖网络非常简单,只需在docker networkcreate 命令中添加 --d overlay 参数。
overlay驱动默认采用VXLAN协议,在IP地址可以互相访问的多个宿主机之间搭建隧道,让容器可以互相访问。Docker 使用 VXLAN 隧道技术创建了虚拟二层覆盖网络。在 VXLAN 的设计中,允许用户基于已经存在的三层网络架构创建虚拟的二层网络。
Docker容器的网络访问控制主要通过Linux上的iptables防火墙软件来进行管理和实现。iptables是Linux系统流行的防火墙软件,大部分发行版中自带iptables。
Docker的forward规则默认允许所有的外部IP访问容器时,可以通过在filter的Docker链上添加规则对外部的IP访问做出限制。不仅是与外部通信,Docker容器之间互相通信也受到iptables规则限制。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~