我正在尝试运行一个可以访问主机上串行端口的Docker容器。
这是我做的:
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
不同。
答案 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
。
该脚本使用inotifywait
和lsusb
来等待(未)插入设备并检查它是否是我们感兴趣的设备。
inotifywait
将继续监听dev/bus/usb
目录下的inodes创建/删除事件,并且只要刚刚创建了与相关设备对应的inode
,就会执行命令。
另请参阅,一旦检测到插入的USB设备, How to get Bus and Device relationship for a /dev/ttyUSB
(与Docker无关,但仍然相关)。
答案 1 :(得分:1)
由于守护程序在Docker Desktop中的VM内运行,因此实际上无法与VM内的容器共享Mac主机设备,这绝对是不可能的。>