Docker容器获取局域网ip(使用macvlan)

说在前面:文末提供了一个简单的脚本作为宿主机一键配置使用

目的

由于日常开发需要多个开发环境获取单独的局域网ip,docker默认的网卡配置无法满足在局域网内互通的需求,偶然发现docker带有macvlan的功能,以下是配置的一些信息记录
下文仅对网络配置有较为详细的介绍,docker的使用不做过多的说明,可以参考网上其他的一些文章

虚拟机环境配置

1.由于依赖于具体的局域网环境,所以要求虚拟机有一张网卡是桥接模式,对应的Linux系统网卡为enp0s9,下面是常用的两种虚拟机配置方式

注意1:由于宿主机的限制(需要为Linux),wsl2无法开启macvlan

注意2:目前测试下来【有线网卡】是能开启混杂模式的,无线网卡的混杂模式实际无法生效,可以自行测试

  • VirtualBox

image-20220414222246225

  • VMware

image-20220414222655881

2.检查Linux系统网卡能够获取到路由器分配的ip,确保虚拟机可以正常获取到路由器的分配的ip

image-20220414223403372

3.设置Linux系统网卡开启混杂模式

在终端输入sudo ip link set enp0s9 promisc on开启网卡接口enp0s9的混杂模式,enp0s9根据实际配置网卡填写

在终端输入ifconfig查看是否开启混杂模式,显示有PROMISC即为混杂模式已开启

PS:这个设置只有在本次运行有效,想要方便一点可以加到启动脚本里

image-20220414223712052

上面用到的相关命令

#使用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

image-20220414224525647

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

image-20220414224803045

2.测试穿透网络配置是否生效

# 创建一个测试容器
docker run --rm -dit \
	--network macvlan-net-1 \
	--name my-macvlan-alpine \<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值