डॉकटर - एक कंटेनर में x डेस्कटॉप कैसे चलाएं?


10

मैं कई अतिथि OSes चलाने के लिए अपने लिनक्स मशीन को स्थापित करने की कोशिश कर रहा हूं, उनमें से एक विंडोज वीएम और दूसरा लिनक्स कंटेनर है। यहां लक्ष्य मुझे होस्ट सिस्टम को गड़बड़ करने से रोकने के लिए है, जबकि आधार ऑपरेटिंग सिस्टम को संचालित करने और होस्ट हार्डवेयर के साथ खेलने के लिए स्वतंत्र है। आखिरकार, कंटेनर में अपने डेस्कटॉप को चलाने के शीर्ष पर, मुझे ग्राफिक्स-त्वरित सिमुलेशन चलाने की उम्मीद है, क्योंकि डॉकर में ऐसे अच्छे गिट-जैसे कंटेनर निर्मित संस्करण हैं, जिनका उपयोग करना एक अच्छा विचार था। शायद libvirt LXC के साथ अच्छा होगा, लेकिन डॉकर के विशेषाधिकारित मोड से कंटेनर में डिवाइस को कॉन्फ़िगर नहीं करना आसान हो जाता है।

मैंने थोड़ा शोध किया है और पहले से ही कुछ उत्तरों के साथ आता हूं, लेकिन मुझे यह सब एक साथ रखने में परेशानी हो रही है।

एलएक्ससी में पृष्ठभूमि

LXC से X चलाने से मुझे यह देखने में मदद मिली कि मैं कंटेनर को कैसे कॉन्फ़िगर कर सकता हूं (यानी):

lxc.cgroup.devices.allow = c 226:0 rwm

और का उपयोग कर

mknod -m 666 dri/card0 c 226 0

होस्ट डिवाइस से कनेक्ट करने के लिए कंटेनर के अंदर।

डाक में काम करनेवाला मज़दूर

से CUDA - एक डोकर कंटेनर से GPU का उपयोग करते हुए , मैंने देखा कि मैं LXC बैकएंड साथ डोकर में काम करने के लिए एक ही सेटअप मिल सकती है।

यह मुझे दिखाई दिया कि यदि डॉक कंटेनर विशेषाधिकार प्राप्त मोड में चलाया जाता है, तो यह इस अतिरिक्त कॉन्फ़िगरेशन के बिना सामान्य रूप से GPU तक पहुंच सकता है। इसलिए, मैंने इसका परीक्षण करने के लिए एक बेस सिस्टम, ग्राफिक्स ड्राइवर, एक्सगॉर-सर्वर, एक्सगोर-एक्सिनिट और एक विंडो मैनेजर स्थापित किया।

पहला प्रयास

# startx
Cannot run from a console (or some message like that)

ठीक है, मुझे लगा कि मैं tty2 पर था।

# tty
/dev/console

यही मुझे उम्मीद नहीं थी।

# chvt 2
# tty
/dev/tty2

ठीक है, ऐसा लगता है जैसे कि काम किया। चलिए # startxफिर कोशिश करते हैं। यह केंद्र में कर्सर के साथ, खिड़की प्रबंधक शुरू कर दिया। कोई माउस प्रतिक्रिया नहीं। कोई कीबोर्ड प्रतिक्रिया नहीं। चलो के साथ tty को बदलने की कोशिश करते हैं Ctrl-Alt+F3। कोई जवाब नहीं। खैर, ऐसा लग रहा है कि मुझे ठंड को रिबूट करना होगा।

दूसरा प्रयास

# tty
/dev/console
# chvt 2
# tty
/dev/console

क्या? मैं इसे अब बदल नहीं सकते?

निरंतर

एक और समय की कोशिश करने के बाद, मुझे टीटीई बदलने के लिए मिला, और startx ने फिर से कंप्यूटर को फ्रीज कर दिया।

अब क्या?

तो, मैं अब एक भाव में हूं। मैं वास्तव में एक कंटेनर का उपयोग करने में सक्षम होना चाहता हूं - डॉकर को पसंद किया गया, libvirt के साथ LXC भी स्वीकार्य है - एक दुबला मेजबान ओएस रखते हुए मेरे दैनिक ऑपरेटिंग सिस्टम के रूप में चलाने के लिए।

क्या यहां विशेषाधिकार प्राप्त मोड के साथ डॉकर का उपयोग करना सबसे अच्छा है, या स्पष्ट एलएक्ससी बैकएंड का उपयोग करना और ऊपर सूचीबद्ध विकल्पों का प्रयास करना है?

मैं अपने विंडोज vm को प्रबंधित करने के लिए पहले से ही libvirt (संभवतः vagrav-libvirt के तहत) का उपयोग करने की योजना बना रहा हूं, इसलिए मेरे लिए इस मामले में libvirt या vagant-LXC का उपयोग करना उसी के बारे में होगा?

संपादित करें: एलएक्ससी बनाम डॉकर को पढ़ते हुए , मुझे यह महसूस होता है कि चूंकि डॉकर और डॉकटर कंटेनर एकल-अनुप्रयोग वातावरण के लिए हैं, शायद इसलिए मेरे दैनिक ऑपरेटिंग सिस्टम के रूप में चलाने के लिए डॉकर के बजाय एलएक्ससी का उपयोग करना सबसे अच्छा होगा। विचार?

संपादित करें: मुझे पता चला है कि, docker की तरह, एक lxc-device कमांड है जो मुझे cgroups और mknin चरणों को बायपास करने की अनुमति देता है। जबकि इससे पहले कि मैं अपने सिस्टम को शुरू करने और फ्रीज करने के लिए x प्राप्त करने में सक्षम था, अब यह केवल त्रुटियां है। शायद मैं अंततः इसका पता लगा सकता हूं, क्योंकि कोई भी व्यक्ति वहां से बाहर नहीं निकलता है।

अपडेट: मेरे पास माउस काम कर रहा है। अतिथि पर, मैंने xf86-input-mouse और xf86-input-keyboard स्थापित किया। मेजबान पर, मैंने निम्नलिखित भाग किया:

# lxc-device -n g1 add /dev/input/mice
# lxc-device -n g1 add /dev/dri/card0
# lxc-device -n g1 add /dev/dri/controlD64
# lxc-device -n g1 add /dev/dri/renderD128
# lxc-device -n g1 add /dev/fb0
# lxc-device -n g1 add /dev/tty2

काम करता है!


मुझे पूरा विश्वास है कि LXC वह है जो मुझे उपयोग करने की आवश्यकता है, और डॉकर नहीं। दुर्भाग्य से, कंटेनर के लिए एक विशिष्ट ट्टी को बांधने के लिए अप-टू-डेट प्रलेखन खोजने के लिए यह बहुत कठिन समय है ताकि मैं एक्स को चला सकूं। मेरे मेजबान और अतिथि दोनों सिस्टमड का उपयोग करते हैं, जबकि आसपास के सभी दस्तावेज संबंधित / / / इनटैब से संबंधित हैं। क्या किसी को पता है कि LXC कंटेनरों के साथ काम करने के लिए सही तरीके से उन्हें होस्ट पर "खुद" प्राप्त करने के लिए कैसे?
पॉल

जब मैं LXC यह करने के लिए अपने स्वयं के tty, और असाइन वीडियो कार्ड दिया था, मैंने कोशिश की startxके साथ exec twmहै, लेकिन पूरी बात मेरे नजरिए से जम गया। कीबोर्ड या माउस का कोई जवाब नहीं।
पॉल

unix.stackexchange.com/questions/18003/linux-lxc-deploying-images-with-tiniest-possible-x11 का प्रासंगिक उत्तर लगता है। मुझे लगता है कि मुझे / dev / इनपुट श्रृंखला को अग्रेषित करने की आवश्यकता है। मैं कोशिश करूँगा कि
पॉल

ऐसा लगता है कि unix.stackexchange.com/questions/18003/... जवाब था, के अनुसार irclog.perlgeek.de/crimsonfu/2015-03-23#i_10327389
फिलिप Durbin

खैर, मुझे लगा कि मेरे पास कीबोर्ड है। लेकिन अब यह फिर से काम नहीं करता है।
पॉल

जवाबों:


1

इस सवाल का जवाब था जो मुझे चाहिए था। बेशक, मैंने lxc-deviceconfig फाइल में cgroup परिभाषाओं के बजाय उपयोग किया । हालांकि, मेरे मामले में, मैंने एक्स में काम करने के लिए केवल कीबोर्ड प्राप्त किया है यदि मैं इसे एक अलग ट्टी पर शुरू करता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.