Điểm:0

Ứng dụng Docker không phải lúc nào cũng tìm thấy các cổng nối tiếp trong Ubuntu 20.04

lá cờ jp

Tôi đang bận với ứng dụng loại IoT yêu cầu phần cứng vật lý được kết nối qua cổng nối tiếp. Chúng tôi đã chọn sử dụng kiến ​​trúc Azure IoT Edge để triển khai ứng dụng trên PC hiện có. Điều này giúp ích cho chu trình DevOps của chúng tôi.

Để sử dụng Azure IoT Edge, ứng dụng của chúng tôi phải được chứa trong bộ chứa và do đó, việc hiển thị các cổng nối tiếp có thể là một thách thức khá lớn. PC là 64-bit và đang chạy Ubuntu 20.04 và có nhiều cổng USB, cổng nối tiếp và LAN mà chúng tôi có thể cắm thiết bị vào.

Chúng tôi đã theo dõi tuyệt vời này hướng dẫn từ Losant để thiết lập điều này.

Các tùy chọn tạo vùng chứa của chúng tôi trông như thế này:

{
  "HostConfig": {
    "PortBinding": {
      "80/tcp": [
        {
          "Cổng máy chủ": "5000"
        }
      ]
    },
    "Đặc quyền": đúng,
    "Tập": {
      "/dev": {}
    }
  }
}

Chúng tôi ánh xạ ứng dụng từ cổng 80 của ứng dụng sang cổng 5000 trên PC và chúng tôi đặt thẻ Tập và thẻ Đặc quyền như được đề xuất trong liên kết hướng dẫn ở trên.

Bản thân thiết bị được kết nối qua USB và do đó chúng tôi phải cài đặt trình điều khiển trên Ubuntu 20.04 từ trang web FTDI.

Câu hỏi của tôi:

Trong một số trường hợp, ứng dụng của chúng tôi sẽ tìm thấy cổng nối tiếp (tty/USB0), nhưng trong hầu hết các trường hợp thì không. Nếu chúng tôi cấp nguồn cho PC với thiết bị được kết nối, ứng dụng thường tìm thấy thiết bị. Làm cách nào chúng tôi có thể thay đổi thiết lập PC/thiết lập docker/thiết lập ứng dụng để nó luôn tìm thấy thiết bị?

LƯU Ý: Đây là một bản sao của câu hỏi này trên StackOverflow vì tôi không chắc liệu câu hỏi thuộc về ở đó hay ở đây.

lá cờ in
Khi bộ chứa Docker không tìm thấy thiết bị được kết nối, đầu ra Terminal của `sudo lsusb` là gì? Tôi tự hỏi liệu thiết bị có đang được chọn ở một vị trí khác trên bus USB hay không.
itstudes avatar
lá cờ jp
Sau khi chạy lệnh đó, tôi nhận được: `Bus 002 Thiết bị 001: ID 1d6b:0003 Trung tâm gốc Linux Foundation 3.0` `Bus 001 Device 003: ID 0403:6015 Future Technology Devices International, Ltd Bridge(I2C/SPI/UART/FIFO)` `Bus 001 Thiết bị 002: ID 15a2:0300 Freescale Semiconductor, Inc. ADP102 NỐI TIẾP DIO` `Bus 001 Thiết bị 001: ID 1d6b:0002 Trung tâm gốc Linux Foundation 2.0` Thiết bị 003 trông giống như thiết bị FTDI, vì vậy có vẻ như thiết bị này hiển thị ở cấp độ PC.
lá cờ in
Khi bạn chạy `docker info`, bạn có thấy `Udev Sync Supported: true` không? Nếu điều này là sai, thì Thiết bị USB sẽ luôn cần được cung cấp cùng một ID thiết bị, điều này không phải lúc nào cũng có thể thực hiện được vì chúng được cung cấp dựa trên các yếu tố khác nhau, chẳng hạn như thời gian khởi động ...
itstudes avatar
lá cờ jp
Vì vậy, [hướng dẫn từ Losant](https://www.losant.com/blog/how-to-access-serial-devices-in-docker) ở trên nói về các quy tắc udev đó. Vì vậy, tôi nghĩ rằng bạn đúng về điều đó.Tôi đã chạy lệnh `docker info` đó và tôi không thể thấy bất cứ điều gì liên quan đến cài đặt Udev. Tôi nghĩ rằng định dạng của tôi cho "Tập" không hoàn toàn chính xác trong phần mã ở trên. Tôi đang xem [liên kết docker này trên Volumes](https://docs.docker.com/storage/volumes/#start-a-container-with-a-volume) và tôi nghĩ bạn nên sử dụng "Mounts “. Khi tôi hiểu đúng định dạng đó, tôi hy vọng mọi thứ sẽ hoạt động bình thường.
Điểm:0
lá cờ jp

Đây thực sự chỉ là một sự lạm dụng đáng tiếc cú pháp cho các tập. liên kết docker này rất hữu ích.

Cú pháp giải quyết như sau:

{
    "HostConfig": {
        "Ràng buộc": [
            "/dev:/dev"
        ],
        "PortBinding": {
            "80/tcp": [
                {
                    "Cổng máy chủ": "5000"
                }
            ]
        },
        "Đặc quyền": đúng
    }
}

Sau khi giải quyết mọi thứ hoạt động như mong đợi.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.