1.创建docker macvlan虚拟网卡
假设宿主机网段为192.168.3.x网段,基础镜像为ubuntu20.04。
1 2 3 4 5 6
| #查看docker虚拟网卡 docker network ls
#创建docker macvlan虚拟网卡 #注意网段与网卡名称 docker network create -d macvlan --subnet=192.168.3.0/24 --ip-range=192.168.3.220/24 -o macvlan_mode=bridge -o parent=ens33 macvlan
|
2.创建与宿主机同网段docker容器
1 2 3 4 5 6 7 8 9
| #拉取ubuntu20.04镜像 docker pull ubuntu:20.04
#查看镜像 docker images
#创建运行容器 #--ip参数后的地址,为容器的IP地址 docker run -itd --network=macvlan --ip=192.168.3.202 --name=test ubuntu:20.04
|
3.使macvlan模式的容器与宿主机通信
由于macvlan模式宿主机和容器是没办法直接进行网络通信。
需要在宿主机上再建立一个macvlan,然后修改路由,使数据经由该macvlan传输到容器内的macvlan即可,macvlan之间是可以互相通信的。
以下操作都在宿主机上运行
1 2 3 4 5 6 7 8 9 10 11
| #新增一个叫mynet(不要和容器的macvlan重名)的macvlan接口 ip link add mynet link ens33 type macvlan mode bridge
#为该接口分配ip网段,并启用 #添加200网段 ip addr add 192.168.3.200 dev mynet ip link set mynet up
#修改路由,使宿主机到192.168.3.200的通信全部经由mynet进行 #添加容器IP ip route add 192.168.3.202 dev mynet
|