为了账号安全,请及时绑定邮箱和手机立即绑定

Docker-一种访问主机USB或串行设备的方法?

Docker-一种访问主机USB或串行设备的方法?

一只萌萌小番薯 2019-12-09 09:22:57
上次我检查时,Docker没有任何方法允许容器访问主机串行或USB端口。有没有办法做到这一点?
查看完整描述

3 回答

?
慕田峪9158850

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是不安全的 ,应谨慎处理。


查看完整回答
反对 回复 2019-12-09
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

对于当前版本的Docker,您可以使用该--device标志来实现所需的功能,而无需授予对所有USB设备的访问权限。


例如,如果您只想/dev/ttyUSB0在Docker容器中进行访问,则可以执行以下操作:


docker run -t -i --device=/dev/ttyUSB0 ubuntu bash


查看完整回答
反对 回复 2019-12-09
?
智慧大石

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主机一起使用。


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 4041 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信