目前有4种方案实现,分别:
第一种docker原生网络驱动macvlan
第二种docker原生网络驱动Overlay+consul
第三种三方隧道方案:flannel(隧道)、weave、OpenvSwitch
第四种三方路由方案:Calico
今天主要讲第一种和第二种方式实现:
第一种macvlan实现:Docker 官方在1.12版本之后引入macvlan网络驱动,可以简单的为容器配置桥接网络,原理:在宿主机物理网卡上虚拟出多个子网卡,通过不同的MAC地址在数据链路层进行网络数据转发,但需要linux内核支持(Linux kernel v3.9–3.19 and 4.0+),macvlan模式不依赖网桥,所以brctl show查看并没有创建新的bridge
docker network create -d macvlan --subnet 172.19.0.0/24 --gateway 172.19.0.1 -o parent=网卡名 网络别名