docker部署Macvlan实现跨主机网络通信的实现

2020-06-17 07:00:37易采站长站整理

docker02:(与docker01相同操作)


开启混杂模式
[root@sqm-docker02 ~]# ip link set ens33 promisc on
[root@sqm-docker02 ~]# ip link show ens33


//创建macvlan网络
[root@sqm-docker02 ~]# docker network create -d macvlan --subnet 172.16.100.0/24 --gateway 172.16.100.1 -o parent=ens33 mac_net1


//运行一个容器:
[root@sqm-docker02 ~]# docker run -itd --name box2 --network mac_net1 --ip 172.16.100.20 busybox

(4)测试两个主机间的两个容器相互通信:

注意事项:

能ping通的原因是两个容器都是基于真实的ens33网卡的,所以宿主机上的ens33网卡必须能够相互通信。这种方式只能够ping通ip地址,是无法ping通容器名的。

实例二:macvlan跨主机多网络解决方案:

(1)首先查看主机内核的8021q模块:


[root@sqm-docker01 ~]# modinfo 8021q


##如果没有查看到该模块,需要执行以下命令进行加载:
[root@sqm-docker01 ~]# modprobe 8021q


开启路由转发:
[root@sqm-docker01 ~]# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.conf
[root@sqm-docker01 ~]# sysctl -p
net.ipv4.ip_forward = 1

(2)修改网络配置信息:

docker01:


[root@sqm-docker01 ~]# cd /etc/sysconfig/network-scripts/
[root@sqm-docker01 network-scripts]# ls


[root@sqm-docker01 network-scripts]# vim ifcfg-ens33

基于ens33网卡进行创建子网卡:


[root@sqm-docker01 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33.10 #网卡名称自定义
[root@sqm-docker01 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33.20

-p:表示保留原有属性(权限)


//修改ens33.10网卡:
[root@sqm-docker01 network-scripts]# vim ifcfg-ens33.10
##只保留以下选项:


//修改ens33.20网卡:
[root@sqm-docker01 network-scripts]# vim ifcfg-ens33.20
配置与ens33.10相同,只需修改ip地址: