关于docker的虚拟网络划分方案

由于一台主机上不可能只跑一个容器,一台主机上的容器也不可能都是一个功能或者一个用户群体,不同用户群体之间信息的性质不同,对信息安全性的要求不同,因此划分虚拟网络的需求的客观的。划分虚拟网络的方法有很多,本文将提出划分docker虚拟网络的一个方案,即使用Docker的macvlan为容器提供桥接网络及跨主机通讯来划分网络。

macvlan的原理是在宿主机物理网卡上虚拟出多个子网卡,通过不同的MAC地址在数据链路层(Data Link Layer)进行网络数据转发的,它是比较新的网络虚拟化技术,需要较新的内核支持(Linux kernel v3.9–3.19 and 4.0+)。

使用mvcvlan

docker network create -d macvlan \
--subnet=172.17.0.0/24 \
--gateway=172.17.0.1  \
-o parent=eth0 mcv

首先,需要创建一个macvlan网络

然后指定要桥接的网络地址此处填docker0的IP地址,docker0的IP地址可以通过ifconfig进行查询。

网关地址与网络地址应该相互匹配

设置要在宿主机的哪块网卡上建立虚拟子网卡,这里我选择的是eth0,给它编号为mcv,方便之后使用

docker  run --net=mcv --ip=101.132.161.25 -itd alpine /bin/sh
docker  run --net=mcv --ip=101.132.161.67 -itd alpine /bin/sh

运行容器,指定刚建好的macvlan网络,并指定IP地址

之后通过docker attach 命令进入容器内部进行ping命令,这一轮操作就算完成了。

提示:创建第二块子网卡时可以将eth0改成eth0.1,将网桥修改为172.17.0.2

结果展示:

(注:101.132.161.67和101.132.161.25均在mcv网卡下,101.132.161.50在mcv1网卡下)

这样虚拟网络划分就完成了。

标签:Docker 发布于:2019-11-03 14:51:56