Как подключиться к внешнему WIFI-маршрутизатору из контейнера docker, работающего в macvlan? - PullRequest
0 голосов
/ 25 апреля 2020

Что я хочу получить:

Я хочу иметь возможность подключения к нескольким беспроводным маршрутизаторам с одной физической машины (ноутбука), я не могу изменить их конфигурацию, поэтому они должны быть запущены DHCP-сервер со своей стороны. Единственное, что я могу сделать, это настроить ноутбук так, как я хочу. насколько я исследовал, MACVLAN - это путь к go для подключения к нескольким сетям с одного физического компьютера.


Топология сети должна быть динамической c, чтобы новые устройства могли присоединяться / отключаться во время выполнения.


Я планирую написать скрипт, который запускается на хосте и запускает контейнер каждый раз, когда подключается новое устройство, а также помещает созданный контейнер в новый macvlan. Я могу добиться этого, имея один свободный контейнер, который все время ищет новые маршрутизаторы WIFI для подключения, после подключения он отправляет сигнал на хост-машину, чтобы хост мог создать новый macvlan и развернуть новый контейнер.

Что у меня уже есть:

  1. У меня Ubuntu 18.04 работает в Virtual Box, в котором есть сетевые настройки: режим Premiscouse включен и адаптер NAT включен
  2. Есть docker хост, работающий в Ubuntu с одним контейнером (альпийский дистрибутив).

Я подписался на этот пост .

, поэтому у меня есть docker контейнер, работающий на macvlan, который я могу пропинговать с хоста Ubuntu.


Вот вывод 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 network ls:

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

Вопрос:

Как разрешить контейнерам, работающим на хосте, подключаться к сетям WiFi?

...