我已经有一个可以在Linux主机上完全工作的Docker容器。现在我希望它可以在Windows和Mac OS X上运行。此容器正在使用USB无线接口(interface)。在Linux中,这就像在Docker run命令上使用--net=host
一样简单,仅此而已。这样,我可以看到容器内的无线接口(interface)并将--privileged
放入,可以将它们更改为监视模式。现在让我们在Windows / Mac中尝试...
我的调查使我选择了适用于Windows / Mac的Docker-toolbox。在该主机OS上,似乎无法将USB设备与标准Docker进行映射。现在,使用VirtualBox“默认”计算机安装了VirtualBox扩展包,并创建了将USB设备连接到容器的过滤器。现在,我可以使用lsusb
命令将USB设备放入容器中了(终于!!!!),这是个好消息……但是不幸的是,我还没有看到它们作为iwconfig
的无线接口(interface)。
我猜这是因为默认的boot2docker计算机没有驱动程序。因此,我的调查再次将我带入了下一步。
我正在尝试使用无线驱动程序创建一个自定义的boot2docker.iso。我在Dockerfile的官方boot2docker GitHub page上看到了一个命令,我认为这是在“编造”我的计划……该命令是rm -rf ./*/kernel/net/wireless/*
。
似乎有意删除了它们。我试图删除该行并构建生成新ISO镜像的镜像。创建一个自定义的boot2docker iso就像下载(克隆)存储库并安装Docker然后执行此docker build -t boot2docker . && docker run --rm boot2docker > boot2docker.iso
一样简单。它将生成一个新的iso文件。
然后,我尝试在两个系统(Windows和Mac)上都基于此新ISO镜像重新创建VirtualBox默认计算机(覆盖默认iso,删除该计算机并再次创建),但未成功。我在容器内看不到无线接口(interface)为“wlanx”。
创建具有无线驱动程序支持的boot2docker 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/和我安装了所有与无线相关的软件包,包括作为驱动程序的固件软件包。
我的方向是正确的,因为现在我可以看到容器内的无线接口(interface)...即使我将其中一个(Ralink Alfa)置于监视模式,但不幸的是,在容器内使用airodump进行扫描后,它也未显示任何数据包。我想念一些东西...:/
任何帮助表示赞赏。
EDIT2 我派生了boot2docker repository。我在Dockerfile和kernel_config文件上推送了更改。如果有人想尝试某些东西,这是值得欢迎的……正如我之前所说,到此为止,我们能够看到容器内的无线接口(interface)并将其置于监视模式下……但没有捕获到任何数据包。与驱动程序相关的某些问题是错误的,我想现在内核的内容还可以...我将继续尝试使用其他芯片组。
最佳答案
好的,所以我可能需要做更多的研究才能完全了解您的问题。但是据我了解,您实际上是在尝试创建绑定(bind)到自定义网络接口(interface)(您的USB无线接口(interface))的容器网络?如果是这样,我们有关于如何创建绑定(bind)到特定网络接口(interface)here的容器网络的文档。您是否尝试过这种方法?基本上,您应该可以将-o com.docker.network.windowsshim.interface=<Interface>
与docker network create
命令一起使用,以指定新网络应使用的主机接口(interface)。然后,您可以将容器连接到绑定(bind)到正确接口(interface)的网络,然后应该具有连接性。
关于docker - 自定义boot2docker.iso以在容器上使用无线设备(Docker-toolbox),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43328155/