docker 指定网卡_Docker 网络模型

1 )Bridge模式

当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。

d147ab7732ab17c2b00697ecad01e00b.png

这里有个比较坑的地方,这个 Docker bridge模式的名字和桥接很像,但是实际上关系不大,Docker bridge模式有点像虚拟机中的 NAT 模式。

2 )Host 模式

如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

6a4e28502b41a4fb80360181712120c8.png

这个比较简单,感觉上去就是在网络层面没有隔离容器,当作一个进城来处理,只把其他资源隔离开。

3 )Container模式

这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。

8cf540aa56bbaf7cc6155cb0746cb32f.png

这里其实与 host 模式相比,就是又多划分了一个 namespace,然后将容器放入同一个namespace中,使其共享网络,但是其他资源是隔离的。

4 )None 模式

使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。

560636574dd3ab66f35c0a827bab51f8.png

5 )跨主机通信

Pipework

Pipework是一个简单易用的Docker容器网络配置工具。由200多行shell脚本实现。通过使用ip、brctl、ovs-vsctl等命令来为Docker容器配置自定义的网桥、网卡、路由等。

  • 使用新建的bri0网桥代替缺省的docker0网桥
  • bri0网桥与缺省的docker0网桥的区别:bri0和主机eth0之间是veth pair

这里我就不自己画图(偷懒贴一张网图)了,和前面的图很类似,只是将其中的docker0,更换成了自己的bri0,然后这样可以自己将bri0 和主机 eth0 之间设置成 veth pair,然后就能实现跨主机通信。

来一张网图:

5738fb557fca4fe0636bd30ed8011d1b.png

其他模式还没有细看,就暂时不整理了,首先把Pipework弄清楚了。

k8s的网络模型也看了一下,和 Docker 几乎一样,所以很明显 Pipework 也可以用到k8s上,但是肯定会有优点和缺点,这一块还没有总结好,总结好后再整理一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值