मुझे लगता है कि सिद्धांत में यह --privileged
ध्वज का उपयोग करके निश्चित रूप से संभव है, क्योंकि यह बात आपको सभी होस्ट उपकरणों तक पहुंचने की क्षमता देती है। यदि आप usbutils या इसी तरह स्थापित करते हैं (आपकी छवियों के वितरण के आधार पर) आप देखेंगे कि विशेषाधिकार प्राप्त कंटेनर lsusb
चलाते समय हॉटप्लग किए गए डिवाइस को देखने में सक्षम है। दुर्भाग्यवश हालांकि वे/dev के अंतर्गत दिखाई नहीं देते हैं। उन वर्णनकर्ताओं के निर्माण को स्क्रिप्ट करना और उन्हें अपने सॉफ्टवेयर द्वारा/dev के तहत सही ढंग से संभाला जाना दुर्भाग्यवश शामिल हो सकता है। यद्यपि यह आपके उपकरणों के लिए ऐसा नहीं होना चाहिए।
आप पहले प्रयास के रूप में क्या कर सकते हैं केवल उन्हें mknod का उपयोग करके बनाना है। मैं यह मेरा एचटीसी फोन के साथ बाहर की कोशिश की और यह एक तरह से काम किया है (प्रासंगिक यहाँ नहीं विवरण), बस lsusb में hotplugged डिवाइस के लिए लाइन की जाँच करें:
Bus 003 Device 002: ID 0bb4:0f25 HTC (High Tech Computer Corp.) One M8
वर्णनकर्ता के लिए सही फ़ोल्डर पर जाएँ:
cd /dev/bus/usb/003
जांच अपने कर्नेल में USB ड्राइवर मौजूदा वर्णनकर्ताओं के लिए मुख्य संस्करण:
[email protected]:/dev/bus/usb/003# ls -la
total 0
drwxr-xr-x 2 root root 160 Dec 26 13:40 .
drwxr-xr-x 6 root root 120 Dec 26 13:30 ..
crw-rw-r-- 1 root root 189, 256 Dec 26 13:30 001
crw-rw-r-- 1 root root 189, 258 Dec 26 13:30 003
crw-rw-r-- 1 root root 189, 259 Dec 26 13:30 004
crw-rw-r-- 1 root root 189, 260 Dec 26 13:30 005
crw-rw-r-- 1 root root 189, 261 Dec 26 13:30 006
=> 189 :) => मंजूरी बना सकते हैं और कर रही है, जबकि इसलिए लघु संस्करण 0.
mknod 002 c 189 0
=> कम से कम lsusb -v
अब डिवाइस खोलने में सक्षम है का उपयोग करें। कुछ अपवादों के साथ, अधिकांश हार्डवेयर आईएमओ के लिए भी काम करना चाहिए।
आप वैकल्पिक रूप से धीमे लेकिन निश्चित रूप से सुरक्षित और डॉकर और कंटेनरराइजेशन की भावना में अधिक सुरक्षित और कंटेनरनाइज़ेशन की भावना में कंटेनरों का उपयोग करने के लिए कंटेनरों का उपयोग करना चाहते हैं, जब आप उन्हें गर्म-माउंट करते हैं और फिर डिवाइस को मुख्य कंटेनर के साथ साझा करते हैं टीसीपी के माध्यम से सोशल टीटी के माध्यम से अपना वीडियो ऐप चला रहा है।
होस्ट पर हॉटप्लग/dev/video0 कहें, आप उस नए कंटेनर को स्पिन कर सकते हैं जिसने इस डिवाइस को उस ईवेंट में आरोहित किया है। इस कंटेनर (कि socat इंस्टॉल किया होगा) पड़ सकते है:
socat tcp-l:54321,reuseaddr,fork file:/dev/video0,nonblock,waitlock=/var/run/video0.lock
इस बात मानते हुए होस्ट नाम video0-सर्वर है अब आप के माध्यम से ग्राहक पर video0 के लिए वर्णनकर्ता बना सकते हैं:
socat pty,link=/dev/video0,waitslave tcp:video0-server:54321
अब आप चाहिए डिवाइस का उपयोग ठीक करने में सक्षम हो। कई उपकरणों के लिए सोशल ओवरहेड मुझे लगता है कि एक मुद्दा नहीं होना चाहिए। यदि नेटवर्किंग के माध्यम से आपके मुख्य कंटेनर के साथ गतिशील रूप से संवाद करने वाले कई कंटेनर के माध्यम से यह स्क्रिप्टिंग एक विकल्प है और ओवरहेड द्वारा किसी भी सार्थक तरीके से प्रदर्शन प्रभावित नहीं होता है, तो दूसरा विकल्प मेरी राय में --privileged
मोड से क्लीनर और सुरक्षित है।
--device ध्वज के साथ समस्या यह है कि डिवाइस विफल होने पर यह विफल हो जाता है। मेरे पास एक बहुत ही जटिल सेटअप है जहां 4 यूएसबी वेबकैम और 4 एसडी कार्ड नियमित रूप से सर्वर से प्लग/अनप्लग किए जाते हैं, और कुछ डॉकर ऐप्स वेबकैम से कनेक्ट होते हैं और कार्ड को डेटा सहेजते हैं। – Ryan
ओह, मैं देखता हूं। यह वास्तव में बहुत जटिल है और मुझे यकीन नहीं है कि डॉकर ने अभी तक इस तरह की स्थितियों को मंजूरी दे दी है। एकमात्र सलाह जो मैं आपको दे सकता हूं, अगर इसे संभव हो तो इसे सरल बनाना होगा, लेकिन यह आपकी अन्य बाधाओं के अनुरूप नहीं हो सकता है। – Auzias