基于MACVLAN配置VMWARE虚拟机中容器网络
测试部环境组 201711
0 文档说明
MACVLAN是docker的一种支持跨主机网络的driver。macvlan本身是linux kernel模块,功能是允许同一个物理网卡配置多个MAC地址,即多个interface,每个interface可以配置自己的IP。本质上是一种网卡虚拟化技术。最大的优点是性能极好。
相对原使用pipework配置容器IP,更为方便,且容器重启后IP仍存在。
测试部主要使用macvlan为各容器配置静态IP,使用方法总结如下。
1 若docker主机为虚拟机,则开启对应VLAN的混杂模式
图片略
2 虚拟机可添加多个网卡,容器即可配置不同地址段IP
配置步骤如下:
2.1 假设当前ubuntu虚拟机配置的网桥br43,地址段为172.28.2.0/24
修改模式:
ip link set br0 promisc on
创建network
docker network create -d macvlan --subnet=172.28.2.0/24 --gateway=172.28.2.254 -o parent=br43 cslc-macvlan1
虚拟机创建容器
docker run -itd --name=u16-sie --hostname=u16-sie --net=cslc-macvlan1 --ip=172.28.2.205 172.28.2.2:4000/sie:171101 /bin/bash
至此容器172.28.2.205与其他各环境,各虚拟机,办公网络均可互通。
2.2 为虚拟机添加一个网卡,VLAN为TD_280
ip addr show对照mac地址确定是哪一个接口eth?
为网卡添加地址
ip addr add 172.26.80.1/24 dev eth3
ifconfig eth3 up
ip link set eth3 promisc on
创建第二个docker network
docker network create -d macvlan --subnet=172.26.80.0/24 --gateway=172.26.80.254 -o parent=eth3 cslc-macvlan2
虚拟机创建容器
docker run -itd --name=u16-sie1 --hostname=u16-sie1 --net=cslc-macvlan2 --ip=172.26.80.205 172.28.2.2:4000/sie:171101 /bin/bash
至此容器172.26.80.205与其他各环境,各虚拟机,办公网络均可互通。
3 测试方法:
外部ping容器ip
ping 172.26.80.205
ping 172.28.2.205
容器ping外部ip
docker exec u16-sie1 ping -c2 172.26.80.254
docker exec u16-sie ping -c2 172.26.80.254
docker exec u16-sie1 ping -c2 172.28.2.254
docker exec u16-sie ping -c2 172.28.2.254
docker exec u16-sie1 ping -c2 172.20.18.254
docker exec u16-sie ping -c2 172.20.18.254
说明:因macvlan通过主机网卡/网桥与外部通信,容器与所属主机之间无法ping。