3 回答
TA贡献1794条经验 获得超7个赞
有两种选择。您可以使用--device可用于访问无--privileged模式USB设备的标志:
docker run -t -i --device=/dev/ttyUSB0 ubuntu bash
或者,假设您的USB设备在主机上的驱动程序可用等情况下可用/dev/bus/usb,则可以使用特权模式和volumes选项将其安装在容器中。例如:
docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb ubuntu bash
请注意,顾名思义,它--privileged是不安全的 ,应谨慎处理。
TA贡献1830条经验 获得超3个赞
对于当前版本的Docker,您可以使用该--device标志来实现所需的功能,而无需授予对所有USB设备的访问权限。
例如,如果您只想/dev/ttyUSB0在Docker容器中进行访问,则可以执行以下操作:
docker run -t -i --device=/dev/ttyUSB0 ubuntu bash
TA贡献1946条经验 获得超3个赞
我想扩展已经给出的答案,以包括对未捕获的动态连接设备的支持,/dev/bus/usb以及如何在将Windows主机与boot2docker VM一起使用时如何使该设备正常工作。
如果使用Windows,则需要在VirtualBox管理器中为要Docker访问的设备添加任何USB规则。为此,您可以通过运行以下命令来停止VM:
host:~$ docker-machine stop default
打开VirtualBox Manager,然后根据需要添加带有过滤器的USB支持。
启动boot2docker VM:
host:~$ docker-machine start default
由于USB设备已连接到boot2docker VM,因此需要从该计算机上运行命令。使用VM打开终端并运行docker run命令:
host:~$ docker-machine ssh
docker@default:~$ docker run -it --privileged ubuntu bash
请注意,以这种方式运行命令时,将仅捕获以前连接的USB设备。仅当您希望它与容器启动后连接的设备一起使用时,才需要volumes标志。在这种情况下,您可以使用:
docker@default:~$ docker run -it --privileged -v /dev:/dev ubuntu bash
请注意,在某些情况下,我不得不使用/dev而不是/dev/bus/usb来捕获类似的设备/dev/sg2。我只能假设对于/dev/ttyACM0或这类设备也是如此/dev/ttyUSB0。
docker run命令也将与Linux主机一起使用。
- 3 回答
- 0 关注
- 4306 浏览
添加回答
举报