Windows 中的 Docker 正在尝试访问 USB 设备

Attempting to access a USB device from Docker in Windows

我无法在 Windows 中找到有关如何从 Docker 访问 USB 设备的任何说明,尽管说明 here 来自 Mac OS X,非常接近。

所以我正在 Windows 上尝试这个,这是我到目前为止所做的:

  1. 将 Oracle VirtualBox 升级到 5.0.16,并安装了 Oracle VM VirtualBox Extensions Pack,它允许 boot2docker VM 使用 USB 2.0 访问我的设备。
  2. 关闭 default 虚拟机,进入 Machine → 设置… → USB。通过从弹出列表中选择机器添加了新的 USB 过滤器。
  3. 重新启动了 Docker 快速启动终端。

问题是,我怀疑 运行 虚拟机实例的命令如下:

docker run --privileged -v <USB directory in host machine>:<USB directory in Docker container> ...

问题是,在 Mac OS X 中它似乎是 /dev/bus/usb,它在 Windows 中出现在哪里?不是同一个地方吗? /dev/ 目录似乎没有 /dev/usb/.

我错过了一步吗? Windows 的 USB 设备路径是否在不同的位置?

顺便说一下,这是我在键入 docker -v:

时使用的 Docker 版本
Docker version 1.10.0, build 590d5108

我目前也在使用 Windows 7.

尽管没有看到 /dev/bus/usb 并且输入以下命令有效,但看起来像是咬紧牙关:

docker run -it --privileged -v /dev/bus/usb:/dev/bus/usb ...

(在我的例子中,它是 docker run-it --privileged -v /dev/bus/usb:/dev/bus/usb -v (shared directory path):(path in container) debian:latest bash,但你的命令会根据你正在做的事情而有所不同)。

此外,如果您正在 Android 设备上工作,并且您希望在它们位于引导加载程序上时仍能访问它们,您将需要在 VirtualBox 中创建两个过滤器:一个用于当您使用 ADB,另一个使用 fastboot。

我能够使用 Docker 工具箱在 Windows 主机上运行它,我假设 OP 正在使用它。

停止 boot2docker 虚拟机:

host:~$ docker-machine stop default

打开 VirtualBox 管理器并根据需要添加 USB 过滤器。

启动 boot2docker 虚拟机:

host:~$ docker-machine start default

由于 USB 设备已连接到 boot2docker VM,因此需要从该机器 运行 命令。使用虚拟机和 运行 Docker 运行 命令打开一个终端:

host:~$ docker-machine ssh
docker@default:~$ docker run -it --privileged ubuntu bash

如果您希望 Docker 容器在容器启动后插入 USB 设备,您可以使用:

docker@default:~$ docker run -it --privileged -v /dev:/dev ubuntu bash

我看到的大多数其他示例都使用 -v /dev/bus/usb:/dev/bus/usb,它仅适用于某些 USB 设备。我必须使用 /dev 用于在插入 USB 端口时创建 /dev/sg2 的应用程序。

请注意,标志 -it 仅作为此处的示例需要,以便您可以在 Ubuntu 容器中获得 Bash 终端。它们实际上并不是工作所必需的。