डॉकर - एक होस्ट यूएसबी या सीरियल डिवाइस तक पहुंच देने का एक तरीका है?


139

पिछली बार जब मैंने जाँच की थी, डॉकटर के पास होस्ट सीरियल या यूएसबी पोर्ट के लिए कंटेनर एक्सेस देने का कोई साधन नहीं था । वहाँ एक चाल है जो ऐसा करने की अनुमति देता है?

जवाबों:


194

विकल्प के एक जोड़े हैं। आप उस --deviceध्वज का उपयोग कर सकते हैं जिसका उपयोग बिना किसी --privilegedमोड के यूएसबी उपकरणों का उपयोग करने के लिए कर सकते हैं :

docker run -t -i --device=/dev/ttyUSB0 ubuntu bash

वैकल्पिक रूप से, यह मानकर कि आपका USB डिवाइस होस्ट में काम कर रहे ड्राइवरों आदि के साथ उपलब्ध है /dev/bus/usb, आप इसे विशेषाधिकार मोड और वॉल्यूम विकल्प का उपयोग करके कंटेनर में माउंट कर सकते हैं । उदाहरण के लिए:

docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb ubuntu bash

ध्यान दें कि के रूप में नाम का तात्पर्य, --privilegedहै असुरक्षित और देखभाल के साथ संभाला जाना चाहिए।


4
जरूरत नहीं -v - विशेषाधिकारित पहले से ही सभी उपकरणों तक पहुंच का मतलब है
कला

12
क्या विंडोज डॉकटर क्लाइंट के लिए इस तरह का कोई तंत्र है?
पास्कल

इस समाधान का उपयोग करके मुझे डॉकटर कंटेनर से उपकरण दिखाई नहीं दे रहे हैं ... यहाँ मेरी समस्या का विवरण stackoverflow.com/questions/37213812 है। किसी भी मदद की सराहना! धन्यवाद।

1
अगर डॉकर पहले से चल रहा है तो USB डिवाइस कनेक्ट होने के बाद भी काम नहीं करता है।
फ्रैंकलिन डाटेटिन

मेरा मतलब है, यह lsusb इसे सूचीबद्ध करने में सक्षम होने के बावजूद / tty / USBX के तहत डिवाइस को मैप नहीं करता है।
फ्रेंकलिन डाटािन

78

डॉकर के वर्तमान संस्करणों के साथ, आप --deviceसभी USB डिवाइसों को एक्सेस देने की आवश्यकता के बिना झंडे का उपयोग कर सकते हैं ।

उदाहरण के लिए, यदि आप /dev/ttyUSB0अपने डॉकटर कंटेनर में केवल सुलभ बनाना चाहते हैं, तो आप कुछ ऐसा कर सकते हैं:

docker run -t -i --device=/dev/ttyUSB0 ubuntu bash

3
बस ध्यान दें कि इस समय डिवाइस एक सिमलिंक नहीं हो सकता है। github.com/docker/docker/issues/13840
wligtenberg

6
--deviceध्वज का उपयोग करते हुए , मैं यह कैसे निर्धारित करूं /dev/<device>कि मेजबान मशीन पर कौन सा संबद्ध एंड्रॉइड डिवाइस है, खासकर विंडोज या मैक के लिए डॉकर क्विकार्ट टर्मिनल (वर्चुअलबॉक्स होस्ट) का उपयोग करते समय?
19

1
यदि आपके डिवाइस का नाम कभी नहीं बदलता है तो यह अच्छी तरह से काम करता है। लेकिन अगर आप कुछ गतिशील का उपयोग कर रहे हैं जो / dev / बस / usb के भीतर उपकरणों का उपयोग करता है तो यह काम नहीं करेगा क्योंकि जब आप प्लग करते हैं और इसे अनप्लग करते हैं तो डिवाइस का नाम बदल जाता है। आपको इसके बजाय उपरोक्त -v (वॉल्यूम) समाधान की आवश्यकता होगी।
ब्रैड ग्रिसॉम

1
@DanCat udev नियम यह सुनिश्चित कर सकते हैं कि आपका उपकरण स्थिर पथ पर जाता है
C. रीड

1
किसी को सिर्फ एक usb डिवाइस का उपयोग करने में दिलचस्पी क्यों होगी ?? Usb डिवाइसेस को कनेक्टेड qnd डिस्कनेक्ट किया जाना है और इसे ऐप्स रनटाइम के दौरान किया जाना चाहिए। USB SATA या कुछ और नहीं है, आप हमेशा कुछ न कुछ होने की उम्मीद नहीं कर सकते ... और मुझे नहीं लगता कि लोग सिर्फ एक रन के लिए docker के माध्यम से ऐप शुरू करते हैं और जैसे ही usb डिवाइस डिस्कनेक्ट होते हैं, सही छोड़ देते हैं? मैं और अधिक सेवा प्रकार के ऐप की तरह कल्पना करता हूं, न कि एकल रन जार ... लेकिन धन्यवाद, वास्तव में कुछ मदद कर सकता है जिसके लिए बहुत सीमित परिदृश्य सूट करेगा
आर्टुरस एम

17

--deviceतब तक काम करता है जब तक आपका USB डिवाइस अनप्लग / रिप्लेस नहीं हो जाता है और तब यह काम करना बंद कर देता है। आपको cgroup devices.allow का इस् तेमाल करना है।
आप बस का उपयोग कर सकते हैं -v /dev:/devलेकिन यह असुरक्षित है क्योंकि यह आपके होस्ट से सभी डिवाइसों को मैप करता है, जिसमें कच्चे डिस्क डिवाइस और इसके आगे भी शामिल हैं। मूल रूप से यह कंटेनर को मेजबान पर जड़ हासिल करने की अनुमति देता है, जो आमतौर पर वह नहीं है जो आप चाहते हैं।
Cgroups दृष्टिकोण का उपयोग करना उस संबंध में बेहतर है और उन उपकरणों पर काम करता है जो कंटेनर के शुरू होने के बाद जुड़ जाते हैं।

यहां देखें विवरण: - बिना स्वीकृत का उपयोग किए डॉकटर में यूएसबी डिवाइस तक पहुंच

इसे चिपकाना थोड़ा कठिन है, लेकिन संक्षेप में, आपको अपने चरित्र उपकरण के लिए प्रमुख संख्या प्राप्त करने की आवश्यकता है और इसे cgp पर भेजें।

189 / देव / ttyUSB * की प्रमुख संख्या है, जिसे आप 'ls -l' के साथ प्राप्त कर सकते हैं। यह आपके सिस्टम पर खान से अलग हो सकता है:

root@server:~# echo 'c 189:* rwm' > /sys/fs/cgroup/devices/docker/$A*/devices.allow  
(A contains the docker containerID)

फिर अपना कंटेनर इस तरह शुरू करें:

docker run -v /dev/bus:/dev/bus:ro -v /dev/serial:/dev/serial:ro -i -t --entrypoint /bin/bash debian:amd64

ऐसा किए बिना, कंटेनर चालू होने के बाद कोई भी नया प्लग या रिबूट करने वाला उपकरण, एक नई बस आईडी प्राप्त करेगा और कंटेनर में प्रवेश की अनुमति नहीं दी जाएगी।


7
-1'ed वाले लोगों के लिए, कृपया मदद करें और कहें कि आप क्या सुधार करना चाहते हैं। मैंने यह पेज दूसरों की मदद करने के लिए लिखा था, जो हमने किया था। मैं यह कहने में थोड़ा ईमानदार रहूंगा कि मुझे वापस साझा करने की कोशिश की जा रही है और स्टैकओवरफ्लो पर भी लोगों की मदद करने की कोशिश की जा रही है: - /
मार्क मर्लिन

यदि आप मेरा उत्तर पढ़ते हैं, तो आप देखेंगे कि वॉल्यूम '-v / dev: / dev' जोड़ने से गतिशील रूप से प्लग किए गए डिवाइसों तक पहुंच प्राप्त होगी।
15

5
rrpilot: -v / dev: / dev आपको / dev / sda सहित अन्य सभी / देवता देता है और अन्य चीजें जिन्हें आप वास्तव में कंटेनर में रूट उपयोगकर्ता के लिए उजागर नहीं करना चाहते हैं। दूसरे शब्दों में, आपका समाधान काम करता है, लेकिन यह असुरक्षित है। उस समस्या के आसपास मेरा हो जाता है। मैं अपने उत्तर को उस बिंदु पर संपादित करूँगा।
मार्क मर्लिन

1
बड़ी संख्या कैसे प्राप्त करें और स्पष्ट किया जाए कि 189कैसे बदला जाना चाहिए, यह दिखा कर उत्तर को बेहतर बनाया जा सकता है । यहाँ क्या भेजा devices.allowजा सकता है , इसका एक विवरण : kernel.org/doc/Documentation/cgroup-v1/devices.txt
Craig Younkins

1
"--Device-cgroup-नियम" (: वहाँ डोकर की एक नई-ish विशेषता यह है कि यह थोड़ा आसान बनाता है docs.docker.com/engine/reference/commandline/create/... )
tianon

14

मैं पहले से दिए गए जवाबों को गतिशील रूप से जुड़े उपकरणों के लिए समर्थन शामिल करना चाहता था, जिनके साथ कब्जा नहीं किया गया है /dev/bus/usbऔर बूट 2docker VM के साथ विंडोज होस्ट का उपयोग करते समय यह कैसे काम कर सकता है।

यदि आप विंडोज के साथ काम कर रहे हैं, तो आपको उन डिवाइसों के लिए कोई USB नियम जोड़ने की आवश्यकता होगी, जो आप चाहते हैं कि Docker वर्चुअलबॉक्स प्रबंधक के भीतर पहुंच सके। ऐसा करने के लिए आप VM को चलाकर रोक सकते हैं:

host:~$ docker-machine stop default

वर्चुअलबॉक्स प्रबंधक खोलें और आवश्यकतानुसार फ़िल्टर के साथ USB समर्थन जोड़ें।

Boot2docker VM शुरू करें:

host:~$ docker-machine start default

चूंकि USB उपकरण boot2docker VM से जुड़े हैं, इसलिए कमांड को उस मशीन से चलाने की जरूरत है। VM के साथ एक टर्मिनल खोलें और docker रन कमांड चलाएँ:

host:~$ docker-machine ssh
docker@default:~$ docker run -it --privileged ubuntu bash

ध्यान दें, जब कमांड इस तरह से चलाया जाता है, तो केवल पहले से जुड़े यूएसबी डिवाइस कैप्चर होंगे। यदि आप कंटेनर चालू करने के बाद कनेक्ट किए गए उपकरणों के साथ काम करना चाहते हैं तो वॉल्यूम ध्वज की आवश्यकता है। उस स्थिति में, आप उपयोग कर सकते हैं:

docker@default:~$ docker run -it --privileged -v /dev:/dev ubuntu bash

ध्यान दें, मुझे कुछ मामलों के /devबजाय /dev/bus/usbएक डिवाइस को पकड़ने के लिए उपयोग करना था /dev/sg2। मैं केवल यह मान सकता हूं कि डिवाइस जैसे /dev/ttyACM0या के लिए सच होगा /dev/ttyUSB0

Docker run कमांड लिनक्स होस्ट के साथ ही काम करेगा।


बढ़ते / देव में अच्छा बिंदु: / देव इसके बजाय। यह अन्य उपकरणों को कैप्चर करने के संदर्भ में अधिक लचीलापन देता है, और गतिशील तत्व के साथ भी मदद करता है।
कोटाकोटकोटा

और आपके मेजबान मशीन की सुरक्षा और अलगाव से भी समझौता करता है।
एक्साद्रा 37

@ Exadra37 यह करता है ... और यदि आपके आवेदन में यह बात मायने रखती है, तो आपको इसका उपयोग नहीं करना चाहिए। हालांकि, इसका ध्यान रखना महत्वपूर्ण है कि कुछ अनुप्रयोग हैं जहाँ आप परवाह नहीं करते हैं और इसके अलगाव के लिए docker का उपयोग नहीं कर रहे हैं। मेरे विशिष्ट मामले में, आपको विंडोज पर एक पैकेज्ड लिनक्स एप्लिकेशन चलाना है।
12-12 बजे rrpilot

3

एक अन्य विकल्प udev को समायोजित करना है, जो नियंत्रित करता है कि डिवाइस कैसे माउंट किए जाते हैं और किस विशेषाधिकार के साथ हैं। धारावाहिक उपकरणों तक गैर-रूट पहुंच की अनुमति देने के लिए उपयोगी। यदि आपके पास स्थायी रूप से संलग्न उपकरण हैं, तो --deviceविकल्प जाने का सबसे अच्छा तरीका है। यदि आपके पास अल्पकालिक उपकरण हैं, तो यहां मैं उपयोग कर रहा हूं:

1. udev नियम सेट करें

डिफ़ॉल्ट रूप से, सीरियल डिवाइस माउंट किए जाते हैं ताकि केवल रूट उपयोगकर्ता डिवाइस तक पहुंच सकें। हमें गैर-रूट उपयोगकर्ताओं द्वारा पठनीय बनाने के लिए एक udv नियम जोड़ने की आवश्यकता है।

/Etc/udev/rules.d/99-serial.rules नामक फ़ाइल बनाएँ। उस फ़ाइल में निम्न पंक्ति जोड़ें:

KERNEL=="ttyUSB[0-9]*",MODE="0666"

MODE = "0666" सभी उपयोगकर्ताओं को आपके ttyUSB उपकरणों को पढ़ने / लिखने (लेकिन निष्पादित नहीं करने) की अनुमति देगा। यह सबसे अधिक अनुमति वाला विकल्प है, और आप इसे अपनी सुरक्षा आवश्यकताओं के आधार पर आगे प्रतिबंधित करना चाह सकते हैं। लिनक्स डिवाइस में प्लग इन होने पर क्या होता है, इसे नियंत्रित करने के बारे में अधिक जानने के लिए आप udev पर पढ़ सकते हैं।

2. माउंट / कंटेनर से होस्ट करने के लिए फ़ोल्डर में देव

सीरियल डिवाइस अक्सर अल्पकालिक होते हैं (किसी भी समय प्लग और अनप्लग किए जा सकते हैं)। इस वजह से, हम प्रत्यक्ष डिवाइस या यहां तक ​​कि / dev / सीरियल फ़ोल्डर में माउंट नहीं कर सकते, क्योंकि जब चीजें अनप्लग होती हैं, तो वे गायब हो सकते हैं। यहां तक ​​कि अगर आप उन्हें वापस प्लग इन करते हैं और डिवाइस फिर से दिखाता है, तो यह तकनीकी रूप से एक अलग फ़ाइल है जो इसमें मुहिम शुरू की गई थी, इसलिए डॉकर इसे नहीं करेंगे। इस कारण से, हम होस्ट से कंटेनर तक पूरे / देव फ़ोल्डर को माउंट करते हैं। आप अपने Docker रन कमांड में निम्न वॉल्यूम कमांड जोड़कर ऐसा कर सकते हैं:

-v /dev:/dev

यदि आपका डिवाइस स्थायी रूप से जुड़ा हुआ है, तो - andice विकल्प या अधिक विशिष्ट वॉल्यूम माउंट का उपयोग करना सुरक्षा दृष्टिकोण से बेहतर विकल्प है।

3. विशेषाधिकार प्राप्त मोड में कंटेनर चलाएँ

- यदि आपने thedevice विकल्प का उपयोग नहीं किया है और पूरे / dev फ़ोल्डर में माउंट किया गया है, तो आपको कंटेनर चलाने की आवश्यकता होगी विशेषाधिकार प्राप्त मोड है (मैं ऊपर उल्लिखित cgroup सामान की जांच करने जा रहा हूं यह देखने के लिए कि क्या इसे हटाया जा सकता है )। आप इसे अपने डॉकर रन कमांड में निम्नलिखित जोड़कर कर सकते हैं:

--privileged

4. एक्सेस डिवाइस / देव / सीरियल / बाय-आईडी फ़ोल्डर से

यदि आपका डिवाइस प्लग और अनप्लग किया जा सकता है, तो लिनक्स इसकी गारंटी नहीं देता है कि इसे हमेशा एक ही ttyUSBxxx स्थान पर रखा जाएगा (विशेषकर यदि आपके पास कई डिवाइस हैं)। सौभाग्य से, लिनक्स डिवाइस में / देव / धारावाहिक / बाय-आईडी फ़ोल्डर में स्वचालित रूप से एक सिमलिंक बना देगा। इस फ़ोल्डर में फ़ाइल को हमेशा एक ही नाम दिया जाएगा।

यह त्वरित रंडाउन है, मेरे पास एक ब्लॉग लेख है जो अधिक विवरण में जाता है।


2

हमारे लिए एक विशिष्ट USB डिवाइस को एक डॉकटर कंटेनर से बांधना कठिन है जो विशिष्ट भी है। जैसा कि आप देख सकते हैं, प्राप्त करने का अनुशंसित तरीका है:

docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb ubuntu bash

यह सभी उपकरणों को इस कंटेनर में बांध देगा। यह असुरक्षित है। सभी कंटेनरों को उन सभी को संचालित करने की अनुमति दी गई थी।

दूसरा तरीका देवपथ द्वारा उपकरणों को बांधना है। ऐसा लग सकता है:

docker run -t -i --privileged -v /dev/bus/usb/001/002:/dev/bus/usb/001/002 ubuntu bash

या --device(बेहतर, नहीं privileged):

docker run -t -i --device /dev/bus/usb/001/002 ubuntu bash

कहीं ज्यादा सुरक्षित। लेकिन वास्तव में यह जानना कठिन है कि एक विशिष्ट उपकरण का देवपथ क्या है।

मैंने इस समस्या को हल करने के लिए इस रेपो को लिखा है।

https://github.com/williamfzc/usb2container

इस सर्वर को तैनात करने के बाद, आप आसानी से HTTP अनुरोध के माध्यम से सभी जुड़े उपकरणों की जानकारी प्राप्त कर सकते हैं:

curl 127.0.0.1:9410/api/device

और पाओ:

{
    "/devices/pci0000:00/0000:00:14.0/usb1/1-13": {
        "ACTION": "add",
        "DEVPATH": "/devices/pci0000:00/0000:00:14.0/usb1/1-13",
        "DEVTYPE": "usb_device",
        "DRIVER": "usb",
        "ID_BUS": "usb",
        "ID_FOR_SEAT": "xxxxx",
        "ID_MODEL": "xxxxx",
        "ID_MODEL_ID": "xxxxx",
        "ID_PATH": "xxxxx",
        "ID_PATH_TAG": "xxxxx",
        "ID_REVISION": "xxxxx",
        "ID_SERIAL": "xxxxx",
        "ID_SERIAL_SHORT": "xxxxx",
        "ID_USB_INTERFACES": "xxxxx",
        "ID_VENDOR": "xxxxx",
        "ID_VENDOR_ENC": "xxxxx",
        "ID_VENDOR_FROM_DATABASE": "",
        "ID_VENDOR_ID": "xxxxx",
        "INTERFACE": "",
        "MAJOR": "189",
        "MINOR": "119",
        "MODALIAS": "",
        "PRODUCT": "xxxxx",
        "SEQNUM": "xxxxx",
        "SUBSYSTEM": "usb",
        "TAGS": "",
        "TYPE": "0/0/0",
        "USEC_INITIALIZED": "xxxxx",
        "adb_user": "",
        "_empty": false,
        "DEVNAME": "/dev/bus/usb/001/120",
        "BUSNUM": "001",
        "DEVNUM": "120",
        "ID_MODEL_ENC": "xxxxx"
    },
    ...
}

और उन्हें अपने कंटेनरों में बांधें। उदाहरण के लिए, आप देख सकते हैं इस डिवाइस का DEVNAME है /dev/bus/usb/001/120:

docker run -t -i --device /dev/bus/usb/001/120 ubuntu bash

शायद यह मदद करेगा।


0

डॉकटर के नवीनतम संस्करणों के साथ, यह पर्याप्त है:

docker run -ti --privileged ubuntu bash

यह सभी सिस्टम संसाधनों (उदाहरण के लिए / dev) को एक्सेस देगा।


2
निजीकृत सुरक्षा के लिए उपयोग करने के लिए एक भयानक विकल्प है, भले ही हाँ, यह काम करता है।
मार्क मर्लिन

2
अगर Arduino से संबंधित सामान जैसे प्रोग्रामिंग के लिए उपयोग किया जाता है, तो यह समाधान अच्छा है
जोस काबेरा ज़ुनिगा

0

ऊपर दिए गए उत्तरों को जोड़ना, उन लोगों के लिए जो डॉकटर के अंदर काम करने वाले बाहरी USB डिवाइस (HDD, फ्लैश ड्राइव) का उपयोग करने का त्वरित तरीका चाहते हैं और निजीकृत मोड का उपयोग नहीं कर रहे हैं:

होस्ट पर अपने डिवाइस के लिए देवपथ खोजें:

sudo fdisk -l

आप सूची से काफी आसानी से अपनी ड्राइव को पहचान सकते हैं। इस पथ की प्रतिलिपि बनाएँ (निम्न उदाहरण के लिए /dev/sda2)।

Disque /dev/sda2 : 554,5 Go, 57151488 octets, 111624 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets

इस देवपथ को माउंट करें (बेहतर /media):

sudo mount <drive path> /media/<mount folder name>

फिर आप इसे docker runपसंद करने के लिए एक परम के रूप में उपयोग कर सकते हैं:

docker run -it -v /media/<mount folder name>:/media/<mount folder name>

या वॉल्यूम में वॉल्यूम के अंतर्गत लिखें:

services:
  whatevermyserviceis:
    volumes:
      - /media/<mount folder name>:/media/<mount folder name>

और अब जब आप अपने कंटेनर को चलाते हैं और प्रवेश करते हैं, तो आपको कंटेनर के अंदर ड्राइव तक पहुंचने में सक्षम होना चाहिए /media/<mount folder name>

अस्वीकरण:

  1. यह शायद धारावाहिक उपकरणों जैसे कि वेबकैम आदि के लिए काम नहीं करेगा। मैंने केवल यूएसबी स्टोरेज ड्राइव के लिए इसका परीक्षण किया है।
  2. यदि आपको नियमित रूप से डिवाइस को फिर से कनेक्ट करने और डिस्कनेक्ट करने की आवश्यकता है, तो यह विधि कष्टप्रद होगी, और यह भी काम नहीं करेगा जब तक कि आप माउंट पथ को रीसेट न करें और कंटेनर को पुनरारंभ करें।
  3. मैंने डॉक्स का उपयोग 17.06 + के रूप में डॉक्स में निर्धारित किया है

0

यदि आप डायनेमिक रूप से उन USB उपकरणों का उपयोग करना चाहते हैं जिन्हें प्लग किया जा सकता है, जबकि docker कंटेनर पहले से चल रहा है, उदाहरण के लिए / dev / video0 पर एक बस संलग्न usb वेब कैमरा एक्सेस करें, आप कंटेनर शुरू करते समय एक cgroup नियम जोड़ सकते हैं। इस विकल्प के लिए एक आवश्यक कंटेनर की आवश्यकता नहीं है और केवल विशिष्ट प्रकार के हार्डवेयर तक पहुंच की अनुमति देता है।

चरण 1

जिस डिवाइस को आप जोड़ना चाहते हैं, उस डिवाइस की प्रमुख संख्या की जाँच करें। आप इसे लिनक्स कर्नेल प्रलेखन में देख सकते हैं । या आप इसे अपने डिवाइस के लिए जांच सकते हैं। उदाहरण के लिए / dev / video0 से जुड़े वेबकेम के लिए डिवाइस की बड़ी संख्या की जांच करने के लिए, आप एक कर सकते हैं ls -la /dev/video0। इसका परिणाम कुछ इस प्रकार है:

crw-rw----+ 1 root video 81, 0 Jul  6 10:22 /dev/video0

जहां पहला नंबर (81) डिवाइस मेजर नंबर है। कुछ सामान्य उपकरण प्रमुख संख्या:

  • 81: यूएसबी वेबकैम
  • 188: सीरियल कन्वर्टर्स के लिए यूएसबी

चरण 2

जब आप डॉकटर कंटेनर शुरू करते हैं तो नियम जोड़ें:

  • --device-cgroup-rule='c major_number:* rmw'हर उस डिवाइस के लिए एक नियम जोड़ें, जिस तक आप पहुंचना चाहते हैं
  • Udev जानकारी तक पहुंच जोड़ें ताकि docker के कंटेनर आपके USB उपकरणों पर अधिक जानकारी प्राप्त कर सकें -v /run/udev:/run/udev:ro
  • के साथ अपने डॉक कंटेनर में / देव वॉल्यूम को मैप करें -v /dev:/dev

लपेटें

तो अपने docker कंटेनर में सभी usb वेबकैम और serial2usb उपकरणों को जोड़ने के लिए ऐसा करें:

docker run -it -v /dev:/dev --device-cgroup-rule='c 188:* rmw' --device-cgroup-rule='c 81:* rmw' ubuntu bash
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.