Docker ipvlan/macvlan网络在有线、无线环境下通信行为不一致问题求助
Docker ipvlan/macvlan网络在有线、无线环境下通信行为不一致问题求助
我现在用Docker Compose部署了两个容器(之后还要加更多,不过先卡在当前的网络问题上了),机器是Linux Mint,Docker版本24.0.7,Compose是2.21.0。
我的网络需求其实很明确:
- 容器之间能正常通信
- 容器能访问家里子网里的其他设备(因为其中一个容器要连接子网里的一个硬件设备)
- 主机能访问容器(有个容器暴露了HTTP的设置界面,我得用它来配置)
我测试了不同的网络组合,结果差异很大,整理成表格如下:
| 连接类型 | 网络类型 | 容器间通信 | 容器到子网通信 | 主机到容器通信 |
|---|---|---|---|---|
| 有线 | macvlan | 正常 | 正常 | 失败 |
| 有线 | ipvlan | 正常 | 正常 | 失败 |
| 无线 | macvlan | 正常 | 失败 | 失败 |
| 无线 | ipvlan | 正常 | 正常 | 正常 |
虽然找到了一个能用的组合(无线+ipvlan),但实际使用中我必须用有线连接,所以这个方案没法长期用。
我不是搞网络的,实在搞不懂为啥会有这种差异,尤其是ipvlan在无线环境下正常,但有线环境下主机连不上容器这点,后来我还发现更诡异的情况:这个无线+ipvlan的组合能正常工作,居然得依赖有线连接处于激活状态!一旦我把有线断开,主机立刻就没法访问容器了。而且不管无线开不开,只要用有线作为父接口,ipvlan就没法满足我的全部需求。
有没有大佬能帮我解释下这是为啥,以及怎么调整才能让有线连接下满足我的三个网络需求?
下面是我的compose.yaml里定义网络的相关部分(用环境变量指定驱动和父接口):
my-network: driver: ${NETWORK_DRIVER:?specify the type of network driver to use} driver_opts: parent: ${NETWORK_PARENT:?specify the name of the physical network upon which the Docker stack's network will be based} ipam: config: - subnet: 192.168.10.0/24 gateway: 192.168.10.1
补充说明:我会根据驱动类型(macvlan/ipvlan)指定正确的父接口,而且创建栈之后也确认过配置是正确的。
备注:内容来源于stack exchange,提问作者me--
相关产品推荐
相关产品推荐

