使用docker for mac在Docker容器中暴露TTY设备

我试图公开一个插入到我的Mac的Arduino到我在Docker for Mac (没有VM)中运行的Linux实例。

Arduino暴露为/dev/tty.usbserialXXX 。 我正在使用基于Ubuntu的node泊坞窗图像。

我正在运行的命令是

 $ docker run --rm -it -v `pwd`:/app --device /dev/tty.usbmodem1421 node bash docker: Error response from daemon: linux runtime spec devices: error gathering device information while adding custom device "/dev/tty.usbmodem1421": lstat /dev/tty.usbmodem1421: no such file or directory. 

如果我尝试使用 – --privileged

 $ docker run --rm -it -v `pwd`:/app --device /dev/tty.usbmodem1421 --privileged node bash root@8f18fdbcf64d:/# ls /dev/tty.* ls: cannot access /dev/tty.*: No such file or directory 

什么都没有暴露!

我正在使用这个来暴露串行设备来testingLinux中的串行驱动程序 。

这里的问题很大程度上是你没有在你的Mac上运行Docker。 您正在Mac上运行Linux VM,在其中运行Docker。 这意味着将Linux虚拟机中的/dev树暴露给Docker很容易,但是如果没有来自虚拟机pipe理程序的某种支持,从Mac公开的设备就不那么容易。

使用基于VirtualBox构build的Mac的传统“Docker Toolbox”,应该可以将USB设备分配给运行Docker的VirtualBox主机(这将允许您将其展示给Docker容器)。

这个GitHub问题讨论了这个特殊情况,并且链接到了有用的文档。

我不知道这种function目前是否适用于较新的“Docker for Mac”软件包中使用的pipe理程序。

/dev/tty.usbserialXXX列出的Arduinodevise可能是设备的符号链接,而不是实际的path。 要阅读符号链接path尝试使用

 docker run --rm -it -v `pwd`:/app --device=/dev/$(readlink /dev/tty.usbmodem1421) node bash 

有一段时间,这个问题已经出现了。 请检查是否解决您的问题

Interesting Posts