Windows 中的 Docker 正在尝试访问 USB 设备
Attempting to access a USB device from Docker in Windows
我无法在 Windows 中找到有关如何从 Docker 访问 USB 设备的任何说明,尽管说明 here 来自 Mac OS X,非常接近。
所以我正在 Windows 上尝试这个,这是我到目前为止所做的:
- 将 Oracle VirtualBox 升级到 5.0.16,并安装了 Oracle VM VirtualBox Extensions Pack,它允许 boot2docker VM 使用 USB 2.0 访问我的设备。
- 关闭
default
虚拟机,进入 Machine → 设置… → USB。通过从弹出列表中选择机器添加了新的 USB 过滤器。
- 重新启动了 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 终端。它们实际上并不是工作所必需的。
我无法在 Windows 中找到有关如何从 Docker 访问 USB 设备的任何说明,尽管说明 here 来自 Mac OS X,非常接近。
所以我正在 Windows 上尝试这个,这是我到目前为止所做的:
- 将 Oracle VirtualBox 升级到 5.0.16,并安装了 Oracle VM VirtualBox Extensions Pack,它允许 boot2docker VM 使用 USB 2.0 访问我的设备。
- 关闭
default
虚拟机,进入 Machine → 设置… → USB。通过从弹出列表中选择机器添加了新的 USB 过滤器。 - 重新启动了 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 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 终端。它们实际上并不是工作所必需的。