Как подключить беспроводной интерфейс USB к контейнеру Docker в Mac OS X?
У меня есть контейнер Linux Docker, который нуждается в беспроводном интерфейсе для работы. В Linux (работает на хосте Linux) у меня нет проблем с этим.
Запуск Docker контейнера с аргументами --privileged
а также --net=host
Я могу получить доступ к беспроводным интерфейсам хоста и управлять ими без каких-либо проблем. Проблема в том, что я запускаю тот же контейнер Linux Docker на хосте Mac OS X. Я не вижу беспроводной интерфейс внутри контейнера Docker.
Это вывод ifconfig на хосте Mac OS X v10.12 (Sierra):
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=b<RXCSUM,TXCSUM,VLAN_HWTAGGING>
ether 00:0c:29:fe:78:07
inet6 fe80::8ff:62ac:e141:5aa9%en0 prefixlen 64 secured scopeid 0x4
inet 192.168.0.153 netmask 0xffffff00 broadcast 192.168.0.255
nd6 options=201<PERFORMNUD,DAD>
media: autoselect (1000baseT <full-duplex>)
status: active
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 00:c0:ca:5a:00:f2
nd6 options=201<PERFORMNUD,DAD>
media: autoselect (<unknown type>)
status: inactive
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
inet6 fe80::7a12:53b9:61c3:3c7%utun0 prefixlen 64 scopeid 0x6
nd6 options=201<PERFORMNUD,DAD>
Интерфейс "en1" - это беспроводное USB-устройство. Теперь вывод ifconfig внутри контейнера выполняется с параметрами, описанными:
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0
ether 02:42:67:b5:aa:36 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.65.2 netmask 255.255.255.248 broadcast 192.168.65.7
inet6 fe80::b564:23a5:1418:8f2a prefixlen 64 scopeid 0x20<link>
ether c0:ff:ee:c0:ff:ee txqueuelen 1000 (Ethernet)
RX packets 22 bytes 2418 (2.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 33 bytes 3100 (3.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 3 bytes 54 (54.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3 bytes 54 (54.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Я думаю, что eth0 контейнера "сопоставлен" с en0
интерфейс и работает, и у меня есть доступ в Интернет внутри контейнера. Но почему я не вижу en1
сопоставлены с любым устройством на контейнере?
Как мне добиться этого на Mac OS X? Если я удалю --net=host
из командной строки запустить Docker, интерфейс docker0
исчезает внутри контейнера... это разница, но беспроводной интерфейс не появляется в любом случае.