为 docker 容器分配宿主局域网IP地址
好记性不如烂笔头,本来熟悉的操作,经过岁月洗礼几乎忘完了。
本文旨在说明如何实现docker
容器使用宿主机IP段对外提供服务或跨主机互通,若尚未安装docker
请移步百度。
文中假设宿主机所在的局域网地址段为
192.168.10.0/24
,请根据实际情况进行修改
创建一个基于macvlan
驱动的网络
docker network create --driver macvlan \
--subnet=192.168.10.0/24 --gateway=192.168.10.1 \
--opt parent=eth0 mcnet
创建一个有固定局域网IP的测试容器
docker run -it --rm --network mcnet --ip 192.168.10.114 alpine
多台宿主机的容器互通
在所有节点重复上述步骤即可,注意不要分配重复的ip地址
特别说明
-
若宿主为物理机或
esxi
,网卡需要开启Trunk
或混杂
模式才可以透传打了tag的数据包 -
若宿主为
hyper-v
虚拟机,则需要开启MAC欺骗,参阅 https://www.rehiy.com/post/434/ -
若宿主为云服务器,你就不要尝试了,多数vpc都是运行在vxlan里面的,不支持vlan数据