如何从在 macvlan 中运行的 docker 容器连接到外部 WIFI 路由器?

如何从在 macvlan 中运行的 docker 容器连接到外部 WIFI 路由器?

我想要得到什么:

我希望能够从一台物理机器(笔记本电脑)连接到多个无线路由器,我无法更改它们的配置,因此它们必须运行 DHCP 服务器。我唯一能做的就是根据需要配置笔记本电脑。据我研究,MACVLAN 是从一台物理机器连接到多个网络的最佳方式。


网络拓扑需要动态,以便新设备可以在运行时加入/断开连接。


我的计划是编写一个在主机上运行的脚本,每次有新设备连接时启动一个容器,并将创建的容器放入新的 macvlan 中。我可以通过始终有一个空闲容器来寻找要连接的新 WIFI 路由器来实现这一点,一旦连接,它就会将信号发送到主机,这样主机就可以创建一个新的 macvlan 并启动一个新容器。

我已经拥有什么:

  1. 我在 Virtual Box 上运行着 Ubuntu 18.04,其网络设置如下:开启 Premiscouse 模式并启用 NAT 适配器
  2. 有一个在 Ubuntu 上运行的 Docker 主机,其中有一个容器(Alpine 发行版)。

我已经关注这篇博文. 所以我有一个 docker 容器,运行在 macvlan 上,我可以从 Ubuntu 主机 ping 通它。

以下是 docker network inspect 92360e976cfd 的输出:

[
{
    "Name": "pub_net",
    "Id": "92360e976cfde6fa9b2aa85b7dfe50a8ebf6e9dbec0c2ad4025de684d388a24c",
    "Created": "2020-04-12T23:37:58.441847504+04:00",
    "Scope": "local",
    "Driver": "macvlan",
    "EnableIPv6": false,
    "IPAM": {
        "Driver": "default",
        "Options": {},
        "Config": [
            {
                "Subnet": "10.0.2.15/24",
                "Gateway": "10.0.2.1"
            }
        ]
    },
    "Internal": false,
    "Attachable": false,
    "Ingress": false,
    "ConfigFrom": {
        "Network": ""
    },
    "ConfigOnly": false,
    "Containers": {
        "e222393f1f6215999bc26626acf0015071e05448763f4155dac4099b86df9796": {
            "Name": "modest_turing",
            "EndpointID": "0da3d13d8c685b32d421433d34fc6e887e69e55a929df6c1f610cfdf75678590",
            "MacAddress": "02:42:0a:00:02:03",
            "IPv4Address": "10.0.2.3/24",
            "IPv6Address": ""
        }
    },
    "Options": {
        "parent": "enp0s3"
    },
    "Labels": {}
}

]

docker 网络 ls:

9979b3a1a4d1        bridge              bridge              local
6331af1d0644        host                host                local
b25f38901cf1        none                null                local
92360e976cfd        pub_net             macvlan             local

问题:

如何让主机上运行的容器连接WiFi网络?

相关内容