使用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
有一段时间,这个问题已经出现了。 请检查是否解决您的问题