Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图从Windows中的Docker访问USB设备_Windows_Docker_Virtualbox - Fatal编程技术网

试图从Windows中的Docker访问USB设备

试图从Windows中的Docker访问USB设备,windows,docker,virtualbox,Windows,Docker,Virtualbox,我还没有找到任何关于如何在Windows中从Docker访问USB设备的说明,尽管这些说明来自MacOSX,但非常接近 因此,我正在Windows上尝试此功能,以下是我迄今为止所做的: 将Oracle VirtualBox升级到5.0.16,并安装,这使boot2docker VM能够使用USB 2.0访问我的设备 关闭默认值虚拟机,然后转到虚拟机→ 设置…→ USB。通过从弹出列表中选择机器,添加了新的USB过滤器 重新启动Docker快速启动终端 问题是,我怀疑运行虚拟机实例的命令如下: d

我还没有找到任何关于如何在Windows中从Docker访问USB设备的说明,尽管这些说明来自MacOSX,但非常接近

因此,我正在Windows上尝试此功能,以下是我迄今为止所做的:

  • 将Oracle VirtualBox升级到5.0.16,并安装,这使boot2docker VM能够使用USB 2.0访问我的设备
  • 关闭
    默认值
    虚拟机,然后转到虚拟机→ 设置…→ USB。通过从弹出列表中选择机器,添加了新的USB过滤器
  • 重新启动Docker快速启动终端
  • 问题是,我怀疑运行虚拟机实例的命令如下:

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

    我目前也在使用Windows 7。

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

    docker run -it --privileged -v /dev/bus/usb:/dev/bus/usb ...
    
    (在我的例子中,是docker运行它--privileged-v/dev/bus/usb:/dev/bus/usb-v(共享目录路径):(容器中的路径)debian:latest bash,但您的命令将根据您所做的不同而有所不同)


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

    我能够在Windows主机上使用Docker Toolbox实现这一点,我假设OP正在使用Docker Toolbox

    停止boot2docker虚拟机:

    host:~$ docker-machine stop default
    
    host:~$ docker-machine start default
    
    打开VirtualBox manager并根据需要添加USB筛选器

    启动boot2docker虚拟机:

    host:~$ docker-machine stop default
    
    host:~$ docker-machine start default
    
    由于USB设备连接到boot2docker VM,因此需要从该机器运行命令。使用VM打开终端并运行Docker run命令:

    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终端。实际上,这并不需要它们。

    您确定您甚至需要volume命令吗?仅授予docker容器的特权访问权就足以让它访问主机上的USB设备,这就是我在Windows上所做的(使用docker Toolbox/VirtualBox)。Windows上的
    /dev/bus/USB
    是USB的有效路径吗?它真的是
    运行它
    (而不是
    运行-它
    )?