Docker 应用程序并不总是在 Ubuntu 20.04 中找到串行端口

标签 docker ubuntu serial-port azure-iot-edge

我正忙于需要通过串行端口连接的物理硬件的 IoT 类型的应用程序。我们选择使用 Azure IoT Edge 架构在本地存在的 PC 上部署应用程序。这有助于我们的 DevOps 周期。
使用 Azure IoT Edge 要求我们的应用程序是容器化的,因此公开串行端口可能是一个相当大的挑战。这台 PC 是 64 位的,运行的是 Ubuntu 20.04,并且有多个 USB、串行和 LAN 端口,我们可以将设备插入其中。
我们关注了这个伟大的tutorial from Losant进行设置。
我们的容器创建选项如下所示:

{
  "HostConfig": {
    "PortBindings": {
      "80/tcp": [
        {
          "HostPort": "5000"
        }
      ]
    },
    "Privileged": true,
    "Volumes": {
      "/dev": {}
    }
  }
}
我们将应用程序的应用程序的端口 80 映射到 PC 上的端口 5000,并按照上面教程链接中的建议设置 Volumes 和 Privileged 标签。
设备本身是通过 USB 连接的,因此我们必须在 Ubuntu 20.04 上从 FTDI website 安装驱动程序。 .
我的问题 :
在某些情况下,我们的应用程序会找到串行端口 (tty/USB0),但在大多数情况下不会。如果我们在连接了设备的情况下重启 PC,应用程序通常会找到该设备。我们如何更改 PC 设置/docker 设置/应用程序设置,以便它总能找到设备?

最佳答案

这实际上只是对卷语法的不幸误用。 This docker link很有帮助。
解析后的语法如下:

{
    "HostConfig": {
        "Binds": [
            "/dev:/dev"
        ],
        "PortBindings": {
            "80/tcp": [
                {
                    "HostPort": "5000"
                }
            ]
        },
        "Privileged": true
    }
}
解决后一切都按预期工作。

关于Docker 应用程序并不总是在 Ubuntu 20.04 中找到串行端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70064134/

相关文章:

laravel - 无法在附加模式下打开文件 : failed to open stream: Permission denied laradock

docker - 通过SSH挂载远程Docker上下文的卷

php - docker-compose 覆盖容器中的目录

linux - 本地 CircleCI 报告 "Unexpected environment preparation error: error looking up self container id: Found multiple cgroups for outer container"

c - 串口数据解析

python - 通过 pyserial 接收多个值并在 Python GUI 中显示

vb.net - 将字符串发送到其等效的十六进制值

linux - Ubuntu 不识别任何命令

linux - 删除文件名中包含特定字符串的文件

ubuntu - 在 Ubuntu 14.04 中安装 WxPython 3.0