问题描述: 创建macvlan,运行容器后,在容器里ping不通网关,意味着跨主机通信不通,宿主机的同网段其它主机也ping不通容器的IP 地址。
这个问题我折腾了好几天,网上的资料看了一大堆,看起来很容易,但是在我的环境里使用了macvlan后,容器就是不能跨主机通信,大年三十早早的起床,又一遍一遍的查资料,终于搞定了,其实很简单,,
说一下我的环境: ESXI 6.5, 系统为centos7(我把内核升级到了4.20,其实不用,3.10就够了), docker 18.09.1版本,宿主机所在网段为10.2.0.1/16,网关为10.2.178.1
步骤:
1. 打开ESXI的web UI, 选择Host(ESXI server自己), 在Hardware 里面找到Network, 点里面的 VM Network, 然后 Edit Setting ,找到 Security 标签页,修改 prosmiscous mode 为Accept, MAC address changes 为Accept, 保存修改
2. 设置centos7 的网卡为混杂模式: ip link set ens192 promisc on
3. 创建macvlan(这个网上有很多,我就不详细说了):
dock network create -d macvlan --subnet 10.2.9.1/16 --gateway 10.2.178.1 -o parent=ens192 test_valn
4. 运行容器: docker run --rm --net=test_valn --ip=10.2.9.101 --name=centos7_valn -t