Docker容器看不到串口设备

时间:2016-05-13 15:24:02

标签: bash docker serial-port usb device

我正在尝试运行一个可以访问主机上串行端口的Docker容器。

这是我做的:

  • 我使用了Mac
  • 主机上已安装的驱动程序 (http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=229&pcid=41
  • 已插入设备
  • 返回了ls /dev/t* /dev/tty.usbserial - 所以它有效
  • 将容器docker run -it --privileged -v /dev:/dev node:4.4.0 /bin/bash,然后ls /dev/t*放入未返回/dev/tty.usbserial设备的容器内...

我玩了很多参数的不同变化,但我还没找到合适的参数:)

--device标志也不适合我,因为设备可能已重新连接且名称可能与/dev/tty.usbserial不同。

2 个答案:

答案 0 :(得分:2)

您可以检查" Notification of new USB devices in docker container" (来自Guido Diepen -- gdiepen)中描述的脚本是否有帮助。

他也使用--privileged参数运行他的容器,以允许它访问设备。并且在启动所述容器时,他将主机目录/dev/bus/usb安装到容器内的/dev/bus/usb目录,并使用参数-v /dev/bus/usb:/dev/bus/usb

该脚本使用inotifywaitlsusb来等待(未)插入设备并检查它是否是我们感兴趣的设备。

  

inotifywait将继续监听dev/bus/usb目录下的inodes创建/删除事件,并且只要刚刚创建了与相关设备对应的inode,就会执行命令。

另请参阅,一旦检测到插入的USB设备, How to get Bus and Device relationship for a /dev/ttyUSB (与Docker无关,但仍然相关)。

答案 1 :(得分:1)

@pgayvallet on GitHub指出:

  

由于守护程序在Docker Desktop中的VM内运行,因此实际上无法与VM内的容器共享Mac主机设备,这绝对是不可能的。