macvlan技术实现docker跨主机通信:
macvlan的优缺点
优点:
(1)docker原生支持,无需安装额外插件,配置起来相对简单。
(2)适合小规模docker环境,例如只有1-3台,如果服务器过多,手动分配IP地址可能会无形之间增加工作量;
缺点:
(1)需要手动分配IP地址,如果让其自动分配IP地址可能会存在多个主机自动分配的IP地址冲突的情况,到时候还需要人工介入维护;
(2)本机相同网络(本案例为"baimei_macvlan")的容器之间相互通信没问题,跨主机之间的容器进行通信也没问题,但容器无法与宿主机之间进行通信,也无法连接到外网
温馨提示:
如果非要使用macvlan,我们需要手动分配IP地址,无法联网的问题,只需要使用"docker network connect"重新分配一块网卡即可解决。
(1)判断Linux内核是否支持macvlan模块
lsmod | grep macvlan
modprobe macvlan # 开启 macvlan
lsmod | grep macvlan
(2)两个节点创建同网段的自定义网络类型
docker network create -d macvlan --subnet 172.29.0.0/16 --gateway 172.29.0.254 -o parent=eth0 baimei-macvlan
(3)10.0.0.201节点基于自定义网络启动容器并手动分配IP地址
docker container run --rm -it --name c1 --network baimei-macvlan --ip 172.29.0.201 alpine
(4)10.0.0.202节点基于自定义网络启动容器并手动分配IP地址
docker container run --rm -it --name c2 --network baimei-macvlan --ip 172.29.0.202 alpine
(5)测试相互ping通
/ # ping 172.29.0.201
/ # ping 172.29.0.202