【问题标题】:Attempting to access a USB device from Docker in Windows尝试在 Windows 中从 Docker 访问 USB 设备
【发布时间】:2016-03-17 02:21:04
【问题描述】:

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

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

  1. 将 Oracle VirtualBox 升级到 5.0.16,并安装了Oracle VM VirtualBox Extensions Pack,这使 boot2docker 虚拟机能够使用 USB 2.0 访问我的设备。
  2. 关闭default 虚拟机,进入机器→设置...→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。

【问题讨论】:

    标签: windows docker virtualbox


    【解决方案1】:

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

    停止 boot2docker 虚拟机:

    host:~$ docker-machine stop default
    

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

    启动 boot2docker 虚拟机:

    host:~$ docker-machine start default
    

    由于 USB 设备已连接到 boot2docker 虚拟机,因此需要从该机器运行命令。使用虚拟机打开终端并运行 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 设备。当插入 USB 端口时,我必须将 /dev 用于创建 /dev/sg2 的应用程序。

    注意,-it 标志只是此处的示例,以便您可以在 Ubuntu 容器中获取 Bash 终端。他们实际上并不需要它来工作。

    【讨论】:

      【解决方案2】:

      尽管没有看到 /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 容器的特权访问权限就足以让它访问主机上的 USB 设备,这就是我在 Windows 上所做的(使用 Docker Toolbox/VirtualBox)。
      • /dev/bus/usb 是 Windows 上 USB 的有效路径吗?
      • 真的是run-it(而不是run -it)吗?
      猜你喜欢
      • 2021-03-04
      • 2013-11-24
      • 2015-08-19
      • 2014-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多