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

时间:2017-04-10 16:13:24

标签: docker kernel dockerfile wireless boot2docker

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

我的调查让我选择适用于Windows / Mac的Docker-toolbox。似乎无法在此主机操作系统上映射带有标准Docker的USB设备。现在,使用VirtualBox“默认”机器,我安装了VirtualBox扩展包并创建了过滤器以将USB设备连接到容器中。现在我可以使用lsusb命令看到(最后!!!)USB设备进入容器这是个好消息......但遗憾的是,我无法看到它们作为iwconfig的无线接口。 / p>

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

我正在尝试使用无线驱动程序创建自定义boot2docker.iso。我在Dockerfile中看到官方boot2docker GitHub page命令,我认为“搞砸了”我的计划......命令是rm -rf ./*/kernel/net/wireless/*

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

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

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

修改 我在Dockerfile上修改了很多东西。有一个包含所有内核选项的kernel_config文件。显然目标是生成一个iso,并设置所有内核选项以支持无线操作...所以我启用了所有无线驱动程序(而不是作为模块,我的意思是包括自动检测),就像我一样can(atheros,realtek,ralink,intel等)...所有选项都启用了内核。我也启用了“CONFIG_USB_MON = y”标志,以便能够使用监控模式。

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

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

感谢任何帮助。

EDIT2 我分叉boot2docker repository。我在Dockerfile和kernel_config文件上推送了我的更改。如果有人想尝试某些东西是受欢迎的...正如我所说,此时,我们能够看到容器内的无线接口并将它们置于监控模式......但没有捕获数据包。与驱动程序有关的东西是错误的,我想内核的东西现在还可以......我会继续尝试使用不同的芯片组。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我没有时间去尝试,所以请稍等一下,但this guide推荐使用Docker Machine,这对我来说很有意义。