【问题标题】:Exposing a TTY device in a docker container with docker for mac使用 docker for mac 在 docker 容器中公开 TTY 设备
【发布时间】:2016-11-05 19:24:54
【问题描述】:

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

Arduino 将自己暴露为/dev/tty.usbserialXXX。我正在使用基于 ubuntu 的 node 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 中测试 serial drivers

【问题讨论】:

标签: linux macos docker node-serialport docker-for-mac


【解决方案1】:

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

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

一段时间前有一个issue 开放。请检查它是否能解决您的问题

【讨论】:

    【解决方案2】:

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

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

    This GitHub issue 谈到了这种特殊情况,并提供了有用文档的链接。

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

    【讨论】:

    • 没有带有“Docker for Mac”的虚拟机
    • 有!我鼓励您仔细阅读the documentation,尤其是上面写着“Docker 引擎在 Mac OS X 上的 xhyve 虚拟机之上的 Alpine Linux 发行版中运行”的部分。 OS X 下的 Docker 曾经使用 VirtualBox,但最近切换到 xhyve,但在这两种情况下它仍然在 Linux VM 中运行,因为这是 Docker 本地运行的唯一平台。
    猜你喜欢
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 2019-12-18
    相关资源
    最近更新 更多