2

我正在尝试将插入我的 mac 的 Arduino 暴露给我在Docker for Mac中运行的 linux 实例(无 vm)。

Arduino 将自己暴露为/dev/tty.usbserialXXX. 我正在使用node基于 ubuntu 的 docker 镜像。

我正在运行的命令是

$ 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

什么都没有暴露!

我正在使用它来公开串行设备以测试linux 中的串行驱动程序。

4

2 回答 2

2

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

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

一段时间前有一个问题悬而未决。请检查它是否解决了您的问题

于 2016-11-05T19:45:48.027 回答
1

这里的问题主要是你没有在你的 mac 上运行 Docker 。您在 Mac 上运行 Linux VM,在其中运行 Docker。这意味着将/devLinux VM 内的树暴露给 Docker 很容易,但在没有虚拟机管理程序的某种支持的情况下,从 Mac 暴露设备就不太容易了。

使用围绕 VirtualBox 构建的 Mac 旧版“Docker 工具箱”,应该可以将 USB 设备分配给运行 Docker 的 VirtualBox 主机(这反过来又允许您将其公开给您的 Docker 容器)。

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

我不知道这种功能目前是否可用于较新的“Docker for Mac”包中使用的管理程序。

于 2016-11-05T19:46:00.223 回答