Docker 应用程序在 Ubuntu 20.04 中无法始终找到串行端口

Docker 应用程序在 Ubuntu 20.04 中无法始终找到串行端口

我正忙于开发一款 IoT 类型的应用程序,该应用程序需要通过串行端口连接的物理硬件。我们选择使用 Azure IoT Edge 架构在本地 PC 上部署应用程序。这有助于我们的 DevOps 周期。

要使用 Azure IoT Edge,我们的应用程序必须容器化,因此公开串行端口可能是一个相当大的挑战。该 PC 是 64 位的,运行的是 Ubuntu 20.04,并且有多个 USB、串行和 LAN 端口,我们可以将设备插入其中。

我们一直关注着这个伟大的Losant 的教程进行设置。

我们的容器创建选项如下:

{
  "HostConfig": {
    "PortBindings": {
      "80/tcp": [
        {
          "HostPort": "5000"
        }
      ]
    },
    "Privileged": true,
    "Volumes": {
      "/dev": {}
    }
  }
}

我们将应用程序的端口 80 映射到 PC 上的端口 5000,并按照上面的教程链接中的建议设置卷和特权标签。

设备本身是通过 USB 连接的,因此我们必须在 Ubuntu 20.04 上安装驱动程序FTDI 网站

我的问题

在某些情况下,我们的应用程序会找到串行端口 (tty/USB0),但大多数情况下不会。如果我们在设备连接的情况下关闭 PC 的电源,应用程序通常会找到该设备。我们如何更改 PC 设置 / docker 设置 / 应用程序设置,以便它始终找到该设备?

注意:这是这个问题在 StackOverflow 上,因为我不确定这个问题是否属于那里或这里。

答案1

这实际上只是对卷语法的不幸误用。此 docker 链接很有帮助。

解析后的语法如下:

{
    "HostConfig": {
        "Binds": [
            "/dev:/dev"
        ],
        "PortBindings": {
            "80/tcp": [
                {
                    "HostPort": "5000"
                }
            ]
        },
        "Privileged": true
    }
}

解决之后一切都按预期进行。

相关内容