Score:0

แอพ Docker ไม่พบพอร์ตอนุกรมใน Ubuntu 20.04 เสมอไป

ธง jp

ฉันยุ่งกับแอปพลิเคชันประเภท IoT ที่ต้องใช้ฮาร์ดแวร์ทางกายภาพที่เชื่อมต่อผ่านพอร์ตอนุกรม เราได้เลือกใช้สถาปัตยกรรม Azure IoT Edge เพื่อปรับใช้แอปพลิเคชันบนพีซีที่มีอยู่ในองค์กร สิ่งนี้ช่วยให้วงจร DevOps ของเรา

ในการใช้ Azure IoT Edge นั้น แอปพลิเคชันของเราต้องบรรจุคอนเทนเนอร์ ดังนั้นการเปิดเผยพอร์ตอนุกรมจึงค่อนข้างท้าทาย พีซีเป็นแบบ 64 บิตและใช้งาน Ubuntu 20.04 และมีพอร์ต USB, พอร์ตอนุกรมและ LAN หลายพอร์ตที่เราสามารถเสียบอุปกรณ์ต่างๆ ได้

เราได้ปฏิบัติตามนี้มาก บทช่วยสอนจาก Losant เพื่อตั้งค่านี้

ตัวเลือกการสร้างคอนเทนเนอร์ของเรามีลักษณะดังนี้:

{
  "HostConfig": {
    "การรวมพอร์ต": {
      "80/tcp": [
        {
          "โฮสต์พอร์ต": "5000"
        }
      ]
    },
    "สิทธิพิเศษ": จริง
    "วอลุ่ม": {
      "/ผู้พัฒนา": {}
    }
  }
}

เราจับคู่แอปพลิเคชันกับพอร์ต 80 ของแอปพลิเคชันของเรากับพอร์ต 5000 บนพีซี และเราตั้งค่าแท็ก Volumes และ Privileged ตามที่แนะนำในลิงก์บทช่วยสอนด้านบน

ตัวอุปกรณ์เชื่อมต่อผ่าน USB ดังนั้นเราจึงต้องติดตั้งไดรเวอร์บน Ubuntu 20.04 จาก เว็บไซต์ ส.อ.ท.

คำถามของฉัน:

ในบางกรณี แอปพลิเคชันของเราจะพบพอร์ตอนุกรม (tty/USB0) แต่ส่วนใหญ่จะไม่พบ หากเราเปิดเครื่องพีซีด้วยอุปกรณ์ที่เชื่อมต่ออยู่ แอปพลิเคชันมักจะพบอุปกรณ์นั้น เราจะเปลี่ยนการตั้งค่าพีซี / การตั้งค่านักเทียบท่า / การตั้งค่าแอปพลิเคชันเพื่อให้ค้นหาอุปกรณ์ได้ตลอดเวลาได้อย่างไร

หมายเหตุ: นี่เป็นการทำซ้ำของ คำถามนี้ ใน StackOverflow เนื่องจากฉันไม่แน่ใจว่าคำถามเป็นของที่นั่นหรือที่นี่

in flag
เมื่อคอนเทนเนอร์ Docker ไม่พบอุปกรณ์ที่เชื่อมต่อ เอาต์พุตเทอร์มินัลของ `sudo lsusb` คืออะไร ฉันสงสัยว่ามีการรับอุปกรณ์ในตำแหน่งอื่นบนบัส USB หรือไม่
itstudes avatar
jp flag
หลังจากรันคำสั่งนั้นฉันจะได้รับ: `บัส 002 อุปกรณ์ 001: ID 1d6b:0003 Linux Foundation 3.0 root hub' `บัส 001 อุปกรณ์ 003: ID 0403:6015 Future Technology Devices International, Ltd Bridge(I2C/SPI/UART/FIFO)` `บัส 001 อุปกรณ์ 002: ID 15a2:0300 Freescale Semiconductor, Inc. ADP102 SERIAL DIO` `บัส 001 อุปกรณ์ 001: ID 1d6b:0002 รูทฮับ Linux Foundation 2.0` อุปกรณ์ 003 ดูเหมือนอุปกรณ์ FTDI ดังนั้นดูเหมือนว่าจะแสดงในระดับพีซี
in flag
เมื่อคุณเรียกใช้ 'docker info' คุณเห็น 'Udev Sync Supported: true' หรือไม่ หากสิ่งนี้เป็นเท็จ อุปกรณ์ USB จะต้องได้รับรหัสอุปกรณ์เดียวกันเสมอ ซึ่งไม่สามารถทำได้เสมอไป เนื่องจากอุปกรณ์เหล่านี้ถูกแจกจ่ายตามปัจจัยที่แตกต่างกัน เช่น เวลาอุ่นเครื่อง ...
itstudes avatar
jp flag
ดังนั้น [บทช่วยสอนจาก Losant](https://www.losant.com/blog/how-to-access-serial-devices-in-docker) ด้านบนจึงพูดถึงกฎ udev เหล่านั้น ดังนั้นฉันคิดว่าคุณพูดถูกฉันเรียกใช้คำสั่ง `docker info` และฉันไม่เห็นสิ่งใดที่เกี่ยวข้องกับการตั้งค่า Udev ฉันคิดว่ารูปแบบของฉันสำหรับ "วอลุ่ม" ไม่ถูกต้องในส่วนโค้ดด้านบน ฉันกำลังดู [ลิงก์นักเทียบท่านี้ใน Volumes](https://docs.docker.com/storage/volumes/#start-a-container-with-a-volume) และฉันคิดว่าคุณควรใช้ "Mounts ". เมื่อได้รูปแบบที่ถูกต้องแล้ว ฉันหวังว่าสิ่งต่างๆ จะทำงานได้อย่างถูกต้อง
Score:0
ธง jp

นี่เป็นเพียงการใช้ไวยากรณ์ในทางที่ผิดอย่างน่าเสียดายสำหรับวอลุ่ม ลิงค์นักเทียบท่านี้ เป็นประโยชน์

ไวยากรณ์ที่ได้รับการแก้ไขมีดังนี้:

{
    "HostConfig": {
        "ผูก": [
            "/เดฟ:/เดฟ"
        ]
        "การผูกพอร์ต": {
            "80/tcp": [
                {
                    "โฮสต์พอร์ต": "5000"
                }
            ]
        },
        "สิทธิพิเศษ": จริง
    }
}

หลังจากแก้ไขว่าทุกอย่างทำงานได้ตามที่คาดไว้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา