क्या LXC कंटेनर के अंदर LXC कंटेनर शुरू करना संभव है?


21

क्या एलएक्ससी कंटेनर को दूसरे एलएक्ससी कंटेनर के अंदर शुरू करना संभव है?


1
क्या आपके पास वास्तव में ऐसा करने का एक वास्तविक कारण है? कृपया याद रखें कि यहां प्रश्न वास्तविक समस्याओं के बारे में होना चाहिए जो आपके सामने हैं
ज़ॉर्दाचे

6
मुझे लगता है, कि lxc VM माइग्रेशन (और बैकअप + रिकवरी भी) को सरल बनाने में सक्षम होना चाहिए। लेकिन मैं मामलों के बारे में निश्चित नहीं हूं, जब होस्ट ओएस (उदाहरण के लिए सस्ते वीपीएस) तक पहुंच नहीं है।
मिखाइल

जवाबों:


45

मैं यहाँ कुछ मिथकों को दूर करने जा रहा हूँ।

यह सिर्फ एक बुरा विचार है। मुझे माफ कर दो। - 20:30 बजे जैकब मार 5

मैं यह नहीं देखता कि यह एक बुरा विचार कैसे है। यह वास्तव में सिर्फ एक क्रोकेट के अंदर एक क्रोकेट है। एक तरफ, यह संभवतः कुछ नगण्य तरीके से प्रदर्शन को कम कर सकता है (एक वीएम के अंदर वीएम चलाने के मुकाबले कुछ भी नहीं)। दूसरी ओर, यह अधिक सुरक्षित होने की संभावना है (जैसे रूट होस्ट सिस्टम से अधिक पृथक और यह घटक)।

क्या आपके पास वास्तव में ऐसा करने का एक वास्तविक कारण है? कृपया याद रखें कि यहां प्रश्न वास्तविक समस्याओं के बारे में होना चाहिए जो आपके सामने हैं। - ज़ोर्डशे मार 5 मार्च 21:52 बजे

मैं पोस्टर की निम्न टिप्पणी से 100% सहमत हूं। इसके अलावा, मुझे लगता है कि यह मानना ​​सुरक्षित है कि हर कोई जो यहां पर एक प्रश्न पोस्ट करता है, वह सोचता है कि उनके पास ऐसा करने का एक वास्तविक कारण है [..]

मुझे लगता है, कि lxc VM माइग्रेशन (और बैकअप + रिकवरी भी) को सरल बनाने में सक्षम होना चाहिए। लेकिन मैं उन मामलों के बारे में निश्चित नहीं हूं, जब होस्ट ओएस (उदाहरण के लिए सस्ते वीपीएस) तक पहुंच नहीं है। - मिखाइल 6 मार्च 11:17 बजे

मैं वास्तव में इस सवाल पर जून में वापस आया था जब मैं पहली बार पाक्स / आईएएएस परियोजनाओं के लिए एलएक्ससी में डाइविंग कर रहा था, और मैं विशेष रूप से उपयोगकर्ताओं को विकास के उद्देश्यों के लिए क्लाउड वातावरण का अनुकरण करने की अनुमति देने में रुचि रखता था।

LXCeption। हम बहुत गहरे हैं। - टॉम ओ'कॉनर 6 मार्च को 22:46 बजे

जब मैंने इसे पढ़ा तो मैं थोड़ा हंसा, लेकिन यह बिल्कुल नहीं है, मामला :)

वैसे भी, मैंने अंततः यह सब पढ़ने के बाद Ubuntu 12.04 LTS सर्वर संस्करण के एक स्टॉक इंस्टाल के साथ एक VirtualBox वातावरण स्थापित किया, यह सोचकर कि यह 100% संभव था। LXC स्थापित करने के बाद, मैंने एक नया कंटेनर बनाया, और apt-get के साथ कंटेनर के अंदर LXC स्थापित किया। अधिकांश इंस्टॉलेशन अच्छी तरह से आगे बढ़े, लेकिन अंततः क्रुप-लाइट पैकेज के साथ एक समस्या के कारण त्रुटि हुई, जिसकी अपस्टार्ट नौकरी पैकेज स्थापित होने के बाद शुरू करने में विफल रही।

थोड़ी खोज करने के बाद, मैं stgraber.org पर इस बढ़िया लेख पर आया ("कंटेनर नेस्टिंग" सेक्शन के तहत अच्छाइयां छिपी हुई हैं):

sudo apt-get install lxc
sudo lxc-create -t ubuntu -n my-host-container -t ubuntu
sudo wget https://www.stgraber.org/download/lxc-with-nesting -O /etc/apparmor.d/lxc/lxc-with-nesting
sudo /etc/init.d/apparmor reload
sudo sed -i "s/#lxc.aa_profile = unconfined/lxc.aa_profile = lxc-container-with-nesting/" /var/lib/lxc/my-host-container/config
sudo lxc-start -n my-host-container
(in my-host-container) sudo apt-get install lxc
(in my-host-container) sudo stop lxc
(in my-host-container) sudo sed -i "s/10.0.3/10.0.4/g" /etc/default/lxc
(in my-host-container) sudo start lxc
(in my-host-container) sudo lxc-create -n my-sub-container -t ubuntu
(in my-host-container) sudo lxc-start -n my-sub-container

उस AppArmor नीति को स्थापित करने और डेमॉन को फिर से शुरू करने ने चाल चली (हालांकि, नेटवर्क रेंज को बदलना मत भूलना, हालांकि)। वास्तव में, मैंने सोचा था कि विशेष स्निपेट इतना महत्वपूर्ण था कि मैंने इसे http:// http://astastinin.com/JDFp6cTB पर देखा कि यदि लेख कभी भी ऑफ़लाइन हो जाता है।

उसके बाद, sudo /etc/init.d/cgroup-lite startसफल हुआ और यह निर्बाध नौकायन था।

तो, हाँ, एक LXC कंटेनर को दूसरे LXC कंटेनर के अंदर शुरू करना संभव है :)


1
यह कॉन्फ़िगरेशन बहुत अधिक AppArmor सुरक्षा को निष्क्रिय करता है (कंटेनर को अपरिभाषित करके)। AppArmor "कंटेनर के अंदर विशेषाधिकार के आकस्मिक दुरुपयोग से मेजबान की रक्षा करना है।" यह कॉन्फ़िगरेशन बहुत अधिक है lxc host को आपके नेस्टेड lxc कंटेनर द्वारा शोषित किया जा रहा है। नेस्टेड LXC होस्ट अपने कंटेनरों को सुरक्षा प्रदान नहीं कर सकता है। सामान्य तौर पर, इस सुरक्षा को अक्षम करने की अनुशंसा नहीं की जाती है।
Reece45

क्या lxc के अंदर lxc चलाने के लिए एक व्यवहार्य सुरक्षित तरीका है?
मस्करपोन

10
वास्तविक दुनिया का उपयोग करने का मामला: मेरे पास एक LXC कंटेनर है जो जेनकिंस को चला रहा है, और मैं चाहता हूं कि एकीकरण परीक्षण से पहले jenkins LXCs कंटेनरों को चलाने में सक्षम हों। विकल्प: LXC के बाहर जेनकींस चलाते हैं, या ssh (बदसूरत) के माध्यम से मेजबान पर LXC कंटेनर बनाते हैं।
जियोवानी टॉराल्डो

13

Ubuntu 14.04 (भरोसेमंद) के साथ आप मूल कंटेनर विन्यास में निम्नलिखित जोड़ सकते हैं:

lxc.mount.auto = cgroup
lxc.aa_profile = lxc-container-default-with-nesting

संदर्भ: https://help.ubuntu.com/lts/serverguide/lxc.html#lxc-basic-usage ("नेस्टिंग" के लिए खोज)

सुनिश्चित करें कि आपके पास लॉगिन स्क्रीन दिखाई देने से पहले एक लंबे ठहराव से बचने के लिए बूट करने से पहले नेटवर्क कॉन्फ़िगर किया गया है!

HTH


1
पूरी तरह से काम करता है - धन्यवाद! मेरे जैसे उपयोगकर्ताओं के लिए, जिनके पास पहले से कोई पेरेंट कंटेनर कॉन्फ़िगर नहीं हो सकता था, जिसमें ऊपर की लाइनें डालने के लिए, ~/.config/lxc/default.confउस यूज़र के खाते के नीचे एक फ़ाइल जोड़कर जो कंटेनर बनाता है और उसमें उन दो लाइनों को जोड़ना ठीक काम करता है।
ब्रैंडन रोड्स

2017 में वापस! हाल ही में मुझे "एंटरप्राइज-वाई" ऐप के लिए lxc के अंदर डॉकटर सेटअप करना है - अच्छी तरह से काम करता है, लेकिन यह मत पूछो ...
लेस्टर चेउंग

1

इसके अलावा ... क्या आप जानते हैं कि आप अब सभी ओपनस्टैक को एक एलएक्ससी कंटेनर में स्थापित कर सकते हैं। प्रत्येक ओपनस्टैक "सेवाओं" (नोवा, स्विफ्ट आदि) को तब सभी "मास्टर / माता-पिता" कंटेनर के अंदर "नेस्टेड" lxc कंटेनरों में स्थापित किया जाता है।

सब कुछ स्थापित करने के लिए कुछ समय लगता है लेकिन जब आपके पास प्रयोग करने के लिए अपने लैपटॉप या डेस्कटॉप पर एक अच्छा परीक्षण ओपनस्टैक वातावरण होता है।

यदि आप ओपनस्टैक को रोकना चाहते हैं, तो आप ओपनस्टैक को पुनः आरंभ करने के लिए मास्टर / माता-पिता के कंटेनर को बंद करें।

देखें: ओपनस्टैक सिंगल इंस्टॉलर निर्देश


1

हाँ, आप नेस्टेड LXC कंटेनरों को कर सकते हैं और पहली टिप्पणी के बावजूद कई बार और उपयोग-मामले हैं जहां नेस्टेड कंटेनर निश्चित रूप से उपयोगी हैं। स्टीफन ग्रेबर के 10 भाग LXC ब्लॉग देखें, लेकिन विशेष रूप से सेक्शन कंटेनर नेस्टिंग -

स्टीफन ग्रेबर की LXC पर 10 भाग श्रृंखला

उपयोग के मामले: मान लीजिए कि आप बहु-किरायेदार एलएक्ससी पर्यावरण चाहते हैं। प्रत्येक व्यक्ति या संगठन के लिए 1 मास्टर कंटेनर बनाएँ जिससे LXC कंटेनर कॉन्फिगर फाइल में 2 सेमी जोड़कर नेस्टिंग को सक्षम किया जा सके। प्रत्येक मास्टर कंटेनर में अगला आपके नेस्टेड उप-कंटेनरों को बनाता है जहां आप एप्लिकेशन, डेस्कटॉप आदि को इंस्टॉल करते हैं जो प्रत्येक समूह की आवश्यकता होती है। ध्यान दें कि जबकि मास्टर कंटेनरों के लिए डिफ़ॉल्ट नेटवर्क 10.0.3.x होगा। नेस्टेड कंटेनर डिफ़ॉल्ट रूप से 10.0.4.x होंगे (यदि आपको आवश्यकता हो तो आप इसे बदल भी सकते हैं)।

नेस्टेड LXC का उपयोग करने से मुझे सबसे बड़ा फायदा क्या है ? यदि आप मास्टर कंटेनर को lxc-stop करते हैं और इसे lxc-clone करते हैं .. तो आप न केवल मास्टर को बल्कि सभी सब-कंटेनरों को क्लोन करते हैं ... यह त्वरित बैकअप के लिए आसान है। यदि आप कभी भी LXC लाइव माइग्रेशन w / CRIU करना चाहते हैं तो यह दृष्टिकोण भी आसान है। जब आप किसी एक मास्टर कंटेनर को दूसरी मशीन में माइग्रेट करते हैं ... तो आप वास्तव में इसे और सभी नेस्टेड कंटेनरों को माइग्रेट कर रहे होते हैं।

अंत में, एलएक्ससी घोंसले के उपयोग के एक शांत उदाहरण के लिए स्टीफन ग्रेबर और अन्य ने 1 एलएक्ससी कंटेनर में एलएक्ससी, बीपीजी और ओएसपीएफ का उपयोग करके "द इंटरनेट" के लिए एक सिम्युलेटर बनाया। उस 1 एलएक्ससी "मास्टर या माता-पिता" एलएक्ससी कंटेनर के अंदर बीजीपी / ओएसपीएफ रूटिंग के लिए प्रत्येक नेगगा में 512 नेस्टेड एलएक्ससी कंटेनर हैं। साथ में उन 512 इंटरनेट "नोड्स" इंटरनेट का अनुकरण करते हैं। इंटरनेट में सुरक्षा के साथ प्रयोग करने के लिए सभी प्रतिभागियों के लिए 2014 के एनएसईसी सुरक्षा सम्मेलन में इस कार्यान्वयन का उपयोग किया गया था।

इसके लिए स्रोत जीथुग पर है: 2014 एनएसईसी एलएक्ससी सिम्युलेटर द इंटरनेट गिटब कोड

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