小李同学 keep digging deeper
Docker

docker虚拟网卡创建

— 字

macvlan 让容器在局域网里拿到一个和宿主机同网段的独立 IP,路由器看它就是一台独立设备。下面是建这种网络的步骤。

先给网卡开混杂模式

先确认当前在用的网卡:

ip route | grep default

一块物理网卡要同时承载多个 MAC 地址的包,需要打开混杂模式(下面的 enp2s0 换成实际网卡名):

ip link set enp2s0 promisc on

建网络

docker network create -d macvlan -o parent=enp2s0 macvlan --subnet=192.168.31.0/24 --ip-range=192.168.31.0/25 --gateway=192.168.31.1 --ipv6 --subnet=2001:db8:2::/64

parent=enp2s0 就是上面查到的网卡名。末尾的 --ipv6 --subnet=2001:db8:2::/64 是 IPv6 部分,不需要就去掉;留着它就同时支持 IPv4 和 IPv6,不用另外建一张网。

--ip-range 怎么算

/25 写成二进制是 11111111.11111111.11111111.10000000,掩码换算成十进制是 255.255.255.128,也就是说这个虚拟网络能分的地址是 1~127 这 127 个(2^7-1,7 是主机位里 0 的个数;25 是网络位里 1 的个数)。

换成 --ip-range=192.168.31.100/30,就是从 100 往后最多分 3 个地址(/30 是 ...11111100,0 的个数是 2,2^2-1=3)。

查看网络

docker network ls

docker network inspect bridge(查看bridge模式)
docker network inspect host(查看host模式)
docker network inspect macvlan(查看macvlan模式)

关于虚拟网卡的介绍可以看这篇文章:

http://events.jianshu.io/p/f9bc6d8be469

本文作者 小李同学,转载请注明出处。

评论

还没有人留言。

写一条

提交后会先进站主的待审列表,通过之后才公开。

搜索文章

输入关键词搜索文章。