Docker 网络 macvlan 驱动程序:网关无法访问

Docker network macvlan driver: gateway unreachable

我有一个使用以下命令创建的 macvlan 网络:

docker network create -d macvlan --subnet=192.168.1.0/24  --gateway=192.168.1.2  -o parent=wlp2s0 pub_ne </pre>

其中 wlp2s0 是我笔记本电脑无线接口的名称。 网关是 192.168.1.1 和子网 192.168.1.0/24

然后我创建了一个容器并将其附加到该网络:

docker run --rm -itd  --network pub_ne  --name myAlpine alpine:latest  sh</pre>

此外,我还使用 virtualbox 提供程序创建了一个具有桥接网络接口的虚拟机。

如果我使用 ping 命令: - docker 容器 -> 虚拟机 ubuntu(虚拟机的 ip:192.168.1.200):ping 正常

但是如果我使用 ping 命令: - docker 容器 -> 网关 192.168.1.1 要么 - docker 容器 -> 外部世界 (google.com): ping 不工作

建议?

编辑 1:

在 docker 主机上,如果我 运行 tcpdump ( tcpdump -i icmp ) 我看到:

    14:53:30.015822 IP 192.168.1.56 > 216.58.205.142: ICMP echo request, id 5376, seq 29, length 64
14:53:31.016143 IP 192.168.1.56 > 216.58.205.142: ICMP echo request, id 5376, seq 30, length 64
14:53:32.016426 IP 192.168.1.56 > 216.58.205.142: ICMP echo request, id 5376, seq 31, length 64
14:53:33.016722 IP 192.168.1.56 > 216.58.205.142: ICMP echo request, id 5376, seq 32, length 64

其中 192.168.1.56 是我的 docker 容器,216.58.205.142 应该是 google IP 地址。没有收到回显回复。

Macvlan 不太可能与 IEEE 802.11 一起工作。

您的 wifi 接入点,and/or 您的主机网络堆栈,不会激动。

您可能想改用 ipvlan:将 -o ipvlan_mode=l2 添加到您的网络创建调用中,看看是否有帮助。

那很可能仍然行不通...(例如,如果您依赖 DHCP 并且您的 DHCP 服务器使用 macaddresses 而不是客户端 ID)

你唯一的(合理的)解决方案可能是完全放弃 wifi 并改为连接设备......(或者远离 macvlan 并使用主机/网桥 - 以最方便的为准)