अनुशंसित, 2020

संपादक की पसंद

लिनक्स कंटेनरों का उपयोग करके कई डिस्ट्रोस सिमुल्टेनोसे कैसे चलाएं

लिनक्स कंटेनर (LXC) एक हल्की वर्चुअलाइजेशन तकनीक है और इनके विभिन्न उपयोग हैं। यह लिनक्स कर्नेल का हिस्सा है, और आपको एक ही लिनक्स होस्ट पर एक या कई लिनक्स डिस्ट्रोस का अनुकरण करने दे सकता है। इसे एक मध्य मैदान के रूप में चेरोट और फुल वर्चुअलाइजेशन तकनीकों जैसे कि वर्चुअलबॉक्स, केवीएम या एक्सएन के बीच में समझें। बीएसडी दुनिया में मौजूद एक समान तकनीक फ्रीबीएसडी जेल हैं।

एक उदाहरण के रूप में, मैं जिस मशीन पर लिख रहा हूं, वह एक लैपटॉप है जो लिनक्स टकसाल 18 पर चल रहा है, जो इंटेल एटम प्रोसेसर द्वारा संचालित है, और इसमें 2 जीबी की रैम है। फिर भी, मैं तीन लिनक्स कंटेनर चला रहा हूं, प्रत्येक अपाचे वेब सर्वर के उदाहरण के साथ चल रहा है, एक बड़ा प्रदर्शन हिट के बिना। यह VirtualBox जैसी पारंपरिक वर्चुअल मशीन के साथ अकल्पनीय होगा। इसलिए, यदि आप अपने लिनक्स सिस्टम पर कई डिस्ट्रोस चलाना चाहते हैं, तो लिनक्स कंटेनर्स को आपके लिए ठीक काम करना चाहिए।

लिनक्स कंटेनरों को स्थापित और कॉन्फ़िगर करना

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

आवश्यक शर्तें

यहां कुछ चीजें हैं जिन्हें आपको कई विकृतियों का उपयोग शुरू करने के लिए सेट करना चाहिए:

1. एलएक्ससी और अन्य आवश्यक सॉफ्टवेयर का उपयोग कर स्थापित करें :

[sourcecode] सुडोल उपयुक्तता lxc lxc- टेम्पलेट्स uidmap [/ sourcecode]

2. अब आपको अपनी प्रोफाइल को कॉन्फ़िगर करना होगा । इसे सेट करने के लिए निम्नलिखित कमांड दर्ज करें:

[sourcecode] mkdir -p ~ / .config / lxc
इको "lxc.id_map = u 0 100000 65536" & amp; gt; ~ / .Config / LXC / default.conf
इको "lxc.id_map = g 0 100000 65536" & amp; amp; gt; & amp; gt; ~ / .Config / LXC / default.conf
इको "lxc.network.type = veth" & amp; amp; gt; & amp; amp; gt; ~ / .Config / LXC / default.conf
इको "lxc.network.link = lxcbr0" & amp; amp; gt; & amp; gt; ~ / .Config / LXC / default.conf
इको "$ USER veth lxcbr0 2" | sudo tee -a / etc / lxc / lxc-usernet [/ sourcecode]

3. फिर, आपको उपयोगकर्ता की अनुमतियों को निम्नानुसार सेट करना होगा :

[sourcecode] सुडो usermod -add-subuids 100000-165536 $ USER
sudo usermod –add-subgids 100000-165536 $ USER

sudo cgm सभी उपयोगकर्ता बनाते हैं
sudo cgm chown सभी उपयोगकर्ता $ (id -u) $ (id -g)
cgm मूवमेंट सभी उपयोगकर्ता $ $ [/ sourcecode]

आपका कंटेनर सेट करना

अब आपके पास LXC कंटेनर अन्य आवश्यक सॉफ़्टवेयर के साथ स्थापित है, यहाँ कंटेनर सेट करने के चरण दिए गए हैं:

1. इस उदाहरण में, हम एक उबंटू कंटेनर स्थापित करेंगे, जिसका नाम ubu1 । इसे करने के लिए, निम्नलिखित कमांड निष्पादित करें:

[sourcecode] lxc-create –template download –name ubu1 [/ sourcecode]

2. यहाँ, –template पैरामीटर इंटरनेट से एक पूर्वनिर्मित छवि को डाउनलोड करने के लिए lxc बताता है, जबकि –name पैरामीटर कंटेनर के नाम को निर्दिष्ट करता है - ubu1 इस मामले में। आप जिसे चाहें नाम का उपयोग कर सकते हैं।

3. अब आपको समर्थित डिस्ट्रो इमेज की एक सूची दिखाई देगी:

4. उस वितरण की बारीकियों को दर्ज करें जिसे आप स्थापित करना चाहते हैं। मैं यहाँ Ubuntu 16.04 (कोडनाम xenial) का 64-बिट संस्करण स्थापित करूँगा:

5. यदि आप छवि को गैर-अंतःक्रियात्मक रूप से स्थापित करना चाहते हैं, तो निम्न आदेश ऊपर के समान परिणाम प्राप्त करता है:

[sourcecode] lxc-create -t ​​download -n ubu1 - –dist ubuntu –release xenial –arch amd64 [/ sourcecode]

6. LXC अब आपके होस्ट सिस्टम पर एक न्यूनतम Ubuntu xenial छवि डाउनलोड और स्थापित करेगा। आपके इंटरनेट कनेक्शन और आपके पीसी की गति के आधार पर डाउनलोड और इंस्टॉलेशन में थोड़ा समय लग सकता है। स्थापना के बाद, आप इस तरह एक स्क्रीन देखेंगे:

अब आप अपने नए सेट अप उबंटू कंटेनर का उपयोग करने के लिए तैयार हैं।

लिनक्स कंटेनरों के साथ कई डिस्ट्रो का उपयोग करना

कंटेनर शुरू

अपने कंटेनर को lxc-start कमांड का उपयोग करके शुरू करें:

[sourcecode] lxc-start -n ubu1 -d [/ sourcecode]

यहां, -n पैरामीटर उस कंटेनर का नाम निर्दिष्ट करता है जिसे आप शुरू करना चाहते हैं (इस मामले में ubu1 ), और -d पैरामीटर इसे पृष्ठभूमि में चलाता है

आप सत्यापित कर सकते हैं कि कंटेनर ने lxc-ls कमांड का उपयोग करके शुरू किया था:

[sourcecode] lxc -ss -f [/ sourcecode]

-f पैरामीटर फैंसी रिपोर्टिंग को सक्षम करता है। यहां, आप देख सकते हैं कि मेरे पास दो कंटेनर हैं - एक डेबियन (रोका) और एक उबंटू (चल रहा है)।

अपने कंटेनर तक पहुंचना और उसका उपयोग करना

आप lxc-attach कमांड का उपयोग करके कंटेनर के कंसोल तक पहुंच सकते lxc-attach :

[sourcecode] lxc-संलग्न -n ubu1 [/ sourcecode]

अब आपके कंटेनर पर एक रूट शेल होगा। यह अनुशंसा की जाती है कि आप रूट उपयोगकर्ता के लिए एक पासवर्ड सेट करें, और एक नियमित उपयोगकर्ता खाता बनाएँ :

[Sourcecode] पासवर्ड
Adduser beebom [/ sourcecode]

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

[sourcecode] उपयुक्त इंस्टॉल wget ओपनश-सर्वर htop tmux नैनो iptables [/ sourcecode]

आपका कंटेनर रोक रहा है

आपके द्वारा कंटेनर के साथ खेलने के बाद, होस्ट सिस्टम पर लौटने के लिए या तो exit कमांड का उपयोग करें। अब अपने कंटेनर को रोकने के लिए lxc-stop कमांड का उपयोग करें:

[sourcecode] lxc-stop -n ubu1 [/ sourcecode]

यह कंटेनर को सफाई से बंद कर देगा और यह डिस्क स्थान को छोड़कर आपके सिस्टम पर किसी भी अधिक संसाधनों का उपभोग नहीं करेगा।

क्लोनिंग और स्नैपशॉट

क्लोन

एक बार जब आप एक कंटेनर में प्रोग्राम स्थापित कर लेते हैं और इसे अपनी पसंद के अनुसार कॉन्फ़िगर कर लेते हैं, तो आप आसान प्रावधान के लिए इसकी एक या एक से अधिक प्रतियां बनाना चाह सकते हैं। आप इसे एक क्लोन बनाकर कर सकते हैं, जो एक कंटेनर की एक सटीक प्रतिकृति है।

उदाहरण के लिए, ubu1 कंटेनर का एक क्लोन बनाने के लिए (चलो इसे ubu2 कहते हैं), पहले कंटेनर को lxc-stop का उपयोग करके lxc-stop, फिर lxc-copy कमांड का उपयोग करें:

[sourcecode] lxc-stop -n ubu

lxc-copy -n ubu1 -N ubu2 [/ sourcecode]

यहाँ, -n विकल्प स्रोत कंटेनर को निर्दिष्ट करता है, और -N विकल्प क्लोन का नाम निर्दिष्ट करता है । यह सत्यापित करने के लिए कि कंटेनर को क्लोन किया गया था, lxc-ls कमांड का उपयोग करें:

स्नैपशॉट्स

मान लीजिए कि आप किसी संभावित परिवर्तन करने वाले हैं या कंटेनर में होने वाले परिवर्तनों से उबरने के लिए, जैसे कि वेब सर्वर को फिर से कॉन्फ़िगर करना। क्षति को कम करने के लिए, आप ऐसा बदलाव करने से पहले कंटेनर का एक स्नैपशॉट बना सकते हैं। यदि कॉन्फ़िगरेशन के दौरान कुछ गलत हो जाता है, तो आप केवल कंटेनर को रोक सकते हैं और स्नैपशॉट को पुनर्स्थापित करके अपनी पिछली कार्यशील स्थिति में पुनर्प्राप्त कर सकते हैं।

स्नैपशॉट बनाने के लिए, पहले कंटेनर को बंद करें :

[sourcecode] lxc-stop -n ubu1 [/ sourcecode]

फिर, lxc-snapshot कमांड का उपयोग करके एक स्नैपशॉट बनाएं :

[sourcecode] lxc-स्नैपशॉट -n ubu1 [/ sourcecode]

यह एक स्नैपशॉट बनाता है जिसे snap0 कहा जाता है। इस आदेश का उपयोग करके आपके द्वारा बनाए गए किसी भी बाद के स्नैपशॉट को स्नैप 1, स्नैप 2 आदि कहा जाएगा।

इसके बाद, आप कंटेनर शुरू कर सकते हैं, और अपने इच्छित बदलाव कर सकते हैं। यदि आप किसी भी समय आपके द्वारा बनाए गए स्नैपशॉट पर लौटना चाहते हैं, तो कंटेनर को रोकें, और lxc-snapshot को पुनर्स्थापित करने के लिए -r पैरामीटर के साथ lxc-snapshot कमांड का उपयोग करें:

[sourcecode] lxc-स्नैपशॉट -r snap0 -n ubu1 [/ sourcecode]

यह ubu1 कंटेनर में स्नैपशॉट snap0 को पुनर्स्थापित करेगा।

बूट में ऑटो स्टार्ट कंटेनर

आप एक कंटेनर बना सकते हैं, उदाहरण के लिए, एक वेब सर्वर कंटेनर, जब आप अपने सिस्टम को बूट करते हैं तो स्वचालित रूप से शुरू होता है। ऐसा करने के लिए, कंटेनर के कॉन्फ़िगरेशन फ़ाइल पर जाएं, जो $HOME/.local/share/lxc//config, और निम्नलिखित पंक्तियाँ जोड़ें :

[sourcecode] lxc.start.auto = 1
lxc.start.delay = 5 [/ sourcecode]

पहली पंक्ति निर्दिष्ट करती है कि कंटेनर को बूट पर शुरू किया जाना चाहिए। दूसरा सिस्टम अगले कंटेनर को शुरू करने से पहले 5 सेकंड प्रतीक्षा करने के लिए कहता है, यदि कोई हो।

समस्या निवारण

यदि आपको कंटेनरों को शुरू करने में परेशानी हो रही है, तो पहली कोशिश यह है कि lxc-start मोड में lxc-start कमांड lxc-start । उदाहरण के लिए:

[sourcecode] lxc-start -n ubu1 -F [/ sourcecode]

यह आपको वर्तमान कंसोलपर त्रुटियों को दिखाएगा, जो समस्या की प्रकृति की पहचान करने में बहुत उपयोगी है।

एकाधिक कंटेनरों को चलाने के साथ समस्याएँ

यदि आप एक साथ कई कंटेनरों को चलाने की कोशिश करते हैं, तो आपको "कोटा पहुंच गया", या "कॉन्फ़िगर नेटवर्क बनाने में विफल" जैसी त्रुटियां दिखाई दे सकती हैं । ऐसा इसलिए है क्योंकि आप आवंटित की तुलना में अधिक नेटवर्क इंटरफेस चला रहे हैं। आप नेटवर्क पुलों की संख्या में वृद्धि कर सकते हैं जो एक उपयोगकर्ता /etc/lxc/lxc-usernet फ़ाइल को रूट के रूप में संशोधित करके चला सकता है । यह कुछ इस तरह दिख सकता है:

[sourcecode] # USERNAME TYPE BRIDGE COUNT
beebom veth lxcbr0 5 [/ sourcecode]

आप संख्या को अंत में बदल सकते हैं (इस उदाहरण में 5), 10. जैसी बड़ी संख्या में। यह आपको एक बार में 10 कंटेनरों तक चलाने की अनुमति देगा।

लिनक्स कंटेनरों के अन्य उपयोग

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

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

लिनक्स कंटेनरों के साथ एकाधिक डिस्ट्रोस चलाएं

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

Top