自定义boot2docker.iso以在容器上使用无线设备(Docker-toolbox)

我已经有了一个在Linux主机上完全工作的Docker容器。 现在我希望它在Windows和Mac OS X上工作。这个容器使用USB无线接口。 在Linux中,就像在Docker运行命令中使用--net=host一样简单,就这些了。 这样,我可以看到容器内的无线接口,并且可以将它们更改为监视模式。 现在让我们尝试在Windows / Mac …

我的调查让我selectDocker-toolbox for Windows / Mac。 在这个主机操作系统上,似乎无法将USB设备与标准的Docker进行映射。 现在,使用VirtualBox“默认”机器,我安装了VirtualBox扩展包,并创build了将USB设备连接到容器的filter。 现在我可以看到(最后!!!)USB设备使用lsusb命令进入容器,这是一个好消息…但不幸的是我不能看到他们作为无线接口做iwconfig

我想这是因为默认的boot2docker机器没有这个驱动程序。 所以,我的调查再次带我进入下一步…

我试图用无线驱动程序创build一个自定义的boot2docker.iso。 我在Dockerfile的官方boot2docker GitHub页面看到一个命令,我认为是“ 搞砸了”我的计划…命令是rm -rf ./*/kernel/net/wireless/*

看来它故意删除它们。 我试图删除该行,并build立图像生成一个新的ISO映像。 创build一个自定义的boot2docker iso就像下载(克隆)repo一样简单,并且安装了Docker,然后执行这个docker build -t boot2docker . && docker run --rm boot2docker > boot2docker.iso docker build -t boot2docker . && docker run --rm boot2docker > boot2docker.iso 。 它会生成一个新的iso文件。

然后我尝试在两个系统(Windows和Mac)上重新创build基于这个新ISO映像的VirtualBox默认机器(覆盖默认的iso,删除机器并重新创build),但是失败了。 容器内无法看到无线接口为“wlanx”。

无线驱动程序支持创buildboot2docker ISO映像文件的过程是什么? 我错过了什么吗? 有没有人有我可以使用的ISO映像?

编辑我修改了Dockerfile上的很多东西。 有一个包含所有内核选项的kernel_config文件。 显然,目标是生成一个与所有内核选项设置为了支持无线操作的ISO …所以我把所有的无线驱动程序启用(不作为模块,我的意思是包括自动检测),尽可能多可以(atheros,realtek,ralink,intel等)…所有选项都启用了内核。 我也启用了“CONFIG_USB_MON = y”标志,以便能够使用监视器模式。

除了我正在研究和学习的所有内核选项外,当然还必须将驱动程序添加到iso中。 为此,我正在修改Dockerfile的另一部分。 它使用tinycore和所有可用的软件包在这里: http : //distro.ibiblio.org/tinycorelinux/7.x/x86_64/tcz/和我安装了所有无线相关的软件包,包括最终的驱动程序固件包。

我在正确的方向,因为现在我可以看到容器内的无线接口…即使我把其中一个(Ralink Alfa)在监视器模式,但不幸的是,在容器内使用airodump扫描后,它没有显示数据包。 我错过了一些东西…:/

任何帮助表示赞赏。

编辑2我分叉boot2docker存储库 。 我在Dockerfile和kernel_config文件上推送了我的更改。 如果有人想要尝试一些东西,欢迎…正如我所说的,在这一点上,我们能够看到在容器内的无线接口,并把它们放在监视模式…但没有捕获数据包。 与驱动程序有关的东西是错误的,我猜内核的东西现在是好的…我会继续尝试不同的芯片组。

好的,所以我可能需要做更多的研究来完全掌握你的问题。 但从我的理解你基本上试图创build一个绑定到自定义networking接口(您的USB无线接口)的容器networking? 如果是这样,我们有文档介绍如何创build绑定到特定networking接口的容器networking。 你有没有尝试过这种方法? 基本上,您应该可以使用-o com.docker.network.windowsshim.interface=<Interface>选项和-o com.docker.network.windowsshim.interface=<Interface> docker network create命令来指定您的新networking应使用哪个主机接口。 然后,您可以将容器附加到绑定到正确界面的networking,然后您应该具有连接性。

我没有时间去尝试,所以拿一点盐,但本指南推荐docker机,这对我来说是有道理的。