说在前面:文末提供了一个简单的脚本作为宿主机一键配置使用
目的
由于日常开发需要多个开发环境获取单独的局域网ip,docker默认的网卡配置无法满足在局域网内互通的需求,偶然发现docker带有macvlan的功能,以下是配置的一些信息记录
下文仅对网络配置有较为详细的介绍,docker的使用不做过多的说明,可以参考网上其他的一些文章
虚拟机环境配置
1.由于依赖于具体的局域网环境,所以要求虚拟机有一张网卡是桥接模式,对应的Linux系统网卡为enp0s9,下面是常用的两种虚拟机配置方式
注意1:由于宿主机的限制(需要为Linux),wsl2无法开启macvlan
注意2:目前测试下来【有线网卡】是能开启混杂模式的,无线网卡的混杂模式实际无法生效,可以自行测试
- VirtualBox
- VMware
2.检查Linux系统网卡能够获取到路由器分配的ip,确保虚拟机可以正常获取到路由器的分配的ip
3.设置Linux系统网卡开启混杂模式
在终端输入sudo ip link set enp0s9 promisc on
开启网卡接口enp0s9
的混杂模式,enp0s9
根据实际配置网卡填写
在终端输入ifconfig
查看是否开启混杂模式,显示有PROMISC
即为混杂模式已开启
PS:这个设置只有在本次运行有效,想要方便一点可以加到启动脚本里
上面用到的相关命令
#使用ip命令配置
sudo ip link set enp0s9 promisc on #设置混杂模式
sudo ip link set enp0s9 promisc off #取消混杂模式
#没有安装ip命令的用ifconfig也行
sudo ifconfig enp0s9 promisc #设置混杂模式
sudo ifconfig enp0s9 -promisc #取消混杂模式
#配置到启动脚本里
echo -e "auto enp0s9 \niface enp0s9 inet manual \n\tup ifconfig \$IFACE 0.0.0.0 up \n\tup ip link set \$IFACE promisc on" | sudo tee -a /etc/network/interfaces
Docker运行环境安装
1.在linux下安装docker engine
#ubuntu 18.04以上
curl -sSL https://get.daocloud.io/docker | sh
# ubuntu 16.04
sudo apt install docker.io
#将当前用户添加至docker用户组 后面就是可以省去再docker命令前加sudo
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $USER docker #将当前用户添加至docker用户组
newgrp docker #更新docker用户组
2.测试安装是否正确
docker run -it --rm hello-world
Docker穿透网络配置
1.创建macvlan网络,创建过一次就行
网卡名为macvlan-net-1 ,将subnet、gateway和parent值修改为在自己环境中有意义的值
#创建网络
docker network create -d macvlan \
--gateway=192.168.188.1 \
--subnet=192.168.188.0/24 \
-o parent=enp0s9\
macvlan-net-1
#查看网卡
docker network ls
#删除网卡
docker network rm macvlan-net-1
2.测试穿透网络配置是否生效
# 创建一个测试容器
docker run --rm -dit \
--network macvlan-net-1 \
--name my-macvlan-alpine \<