लिनक्स कंटेनर गाइड: कंटेनरों का परिचय

click fraud protection

कंटेनर वर्षों से चर्चा का विषय रहा है... लेकिन वास्तव में वे क्या हैं?

कंटेनर आपके कंप्यूटर पर वर्चुअल मशीनों के समान वर्चुअलाइज्ड एप्लिकेशन चलाने की एक विधि है, लेकिन अंतर्निहित प्रौद्योगिकियों के एक अलग सेट का उपयोग करते हुए। उन्हें समझना जटिल हो सकता है, लेकिन वे हर चीज़ को चलाने के लिए आवश्यक हैं माइनक्राफ्ट Google को सर्वर। और हम आपको दिखाने जा रहे हैं कि उन्हें कैसे सेट अप करें।

हम लिनक्स का उपयोग करेंगे, जो पोर्टेबिलिटी, मॉड्यूलैरिटी और स्थिरता पर ध्यान केंद्रित करके बनाया गया एक ऑपरेटिंग सिस्टम है। लिनक्स सर्वर से लेकर माइक्रोवेव से लेकर वीडियो गेम कंसोल तक हर चीज में है। कंटेनर लिनक्स पर चलने तक ही सीमित नहीं हैं, बल्कि उनके पीछे की प्रौद्योगिकियां लिनक्स के लिए सबसे उपयुक्त हैं और सबसे अच्छी तरह चलती हैं। यदि आप Linux में नए हैं, तो हम अनुशंसा करेंगे कि आप हमारी जाँच करें शुरुआती मार्गदर्शक गोता लगाने से पहले.

क्या कंटेनर वर्चुअल मशीन हैं?

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

बहु, तो आपने हाइपरवाइजर का उपयोग किया है।

हाइपरवाइज़र आमतौर पर या तो अपने स्वयं के ऑपरेटिंग सिस्टम (टाइप 1 हाइपरवाइज़र के रूप में जाना जाता है) या विंडोज या उबंटू (एक टाइप 2 हाइपरवाइज़र) जैसे किसी अन्य ऑपरेटिंग सिस्टम की सीमा के भीतर चलता है। हाइपरवाइजर की जिम्मेदारी अतिथि ऑपरेटिंग सिस्टम को चलाने के लिए आवश्यक सिम्युलेटेड हार्डवेयर के साथ प्रस्तुत करना है। फिर पूरा ऑपरेटिंग सिस्टम शीर्ष पर चल सकता है। इसमें सिम्युलेटेड सीपीयू और रैम से लेकर डेटा बस, डिस्क ड्राइव या नेटवर्क एडेप्टर तक सब कुछ शामिल है। यह सिमुलेशन कम्प्यूटेशनल रूप से महंगा है, इसलिए वर्चुअल मशीनों में आमतौर पर महत्वपूर्ण ओवरहेड होता है।

तो, कंटेनर क्या है?

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

कंटेनर एक कंटेनर इंजन के माध्यम से होस्ट ऑपरेटिंग सिस्टम तक पहुंचते हैं, जो चल रहे कंटेनरों का प्रबंधन करता है और अंतर्निहित ऑपरेटिंग सिस्टम तक उनकी पहुंच को नियंत्रित करता है। इसमें कंटेनरों के बीच सुरक्षा लागू करना और ऑपरेटिंग सिस्टम फ़ाइलों या नेटवर्क कनेक्शन तक पहुंच प्रदान करना या अस्वीकार करना शामिल हो सकता है।

कंटेनरों का उपयोग करने के लिए कुछ ट्रेडऑफ़ क्या हैं?

जबकि वर्चुअल मशीनें और कंटेनर समान हैं, कंटेनरों के उपयोग में इसकी कमियां हैं। एक के लिए, वर्चुअल मशीनों को अधिक सुरक्षित माना जाता है, क्योंकि वर्चुअल मशीन से "बचने" के लिए हमले की सतह काफी छोटी होती है और उसमें घुसना कठिन होता है। उदाहरण के लिए, कोई कंटेनर मैलवेयर के परीक्षण के लिए उपयुक्त नहीं हो सकता है।

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

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

डॉकर स्थापित करना

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

डॉकर तेजी से वास्तविक कंटेनरीकरण उपकरण बन गया है। जबकि अन्य उपकरण मौजूद हैं, डॉकर को व्यापक रूप से अपनाया जाता है और यह सबसे अधिक मांग वाले अनुप्रयोगों को छोड़कर सभी के लिए एकदम सही है। वहाँ है डॉकर को स्थापित करने के विभिन्न तरीकों पर दस्तावेज़ीकरण, लेकिन हम सुविधाजनक इंस्टाल स्क्रिप्ट का उपयोग करेंगे। यह कमांड get.docker.com से आपकी स्थानीय मशीन पर एक स्क्रिप्ट डाउनलोड करेगा:

$ curl -fsSL https://get.docker.com -o get-docker.sh

फिर आप डॉकर को स्थापित करने के लिए इस स्क्रिप्ट को चला सकते हैं। आप संस्करण की जाँच करके सत्यापित कर सकते हैं कि डॉकर सही ढंग से स्थापित है:

$ sudo sh ./get-docker.sh

इसके बाद एक संस्करण जांच की जाएगी:

$ sudo docker version

आप यह भी सत्यापित कर सकते हैं कि डॉकर सेवा पृष्ठभूमि में चल रही है:

$ sudo systemctl status docker

इसे हरे पाठ में 'सक्रिय (चल रहा है)' इंगित करना चाहिए, जैसा कि नीचे स्क्रीनशॉट में हाइलाइट किया गया है। डॉकर इंजन का संस्करण भी बिना किसी त्रुटि के मुद्रित किया जाना चाहिए।

एक सरल उदाहरण चल रहा है

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

$ sudo docker pull hello-world

एक बार वह छवि डाउनलोड हो जाए, तो आप निम्नलिखित का उपयोग करके अपने सिस्टम पर डाउनलोड की गई छवियों को सूचीबद्ध करके सत्यापित कर सकते हैं:

$ sudo docker images

अब आपको हेलो-वर्ल्ड डाउनलोड हुआ दिखना चाहिए। बहुत छोटे आकार (हमारी परीक्षण मशीन पर 13Kb) और साथ ही इसके टैग पर भी ध्यान दें। किसी छवि का टैग प्रभावी रूप से उसका संस्करण है। डिफ़ॉल्ट रूप से, डॉकर एक छवि का नवीनतम संस्करण डाउनलोड करेगा। इस छवि के आधार पर एक कंटेनर चलाएँ:

$ sudo docker run hello-world: latest

यह डॉकर्स के हैलो-वर्ल्ड स्पील को आउटपुट करेगा, जो एक बहुत छोटे सी प्रोग्राम से चलता है (जिसे आप देख सकते हैं GitHub).

बधाई हो; आपने अपना पहला कंटेनर चला लिया है! इस स्थिति में, प्रोग्राम ने अपना परिणाम आउटपुट कर दिया है और अपना निष्पादन पूरा कर लिया है। कंटेनर अब ख़त्म हो चुका है और अब चल नहीं रहा है।

कंटेनरों को कैसे जीवित रखें

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

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

$ sudo docker pull nginx

हमने जोड़ दिया है -पी कंटेनर से होस्ट ऑपरेटिंग सिस्टम में पोर्ट फ़ॉरवर्डिंग को कॉन्फ़िगर करने के लिए यहां फ़्लैग करें। पोर्ट 80 का उपयोग अनएन्क्रिप्टेड HTTP (यानी वेब) ट्रैफ़िक के लिए किया जाता है। यह आपको अपने होस्ट मशीन से कंटेनर तक पहुंचने की अनुमति देगा:

$ sudo docker run -p 80:80 nginx

यह कमांड आपके टर्मिनल में संलग्न मोड में चलेगा जिसका अर्थ है कि कंटेनर वस्तुतः आपके टर्मिनल से जुड़ा हुआ है, इसलिए कंटेनर से सभी लॉग वहां मुद्रित किए जाएंगे। एक बार कंटेनर चालू हो जाए, तो खोलें http://localhost आपके वेब ब्राउज़र में. आपको नीचे की तरह एक Nginx स्वागत स्क्रीन दिखाई देगी:

Nginx कंटेनर अब आपके कंटेनर इंजन के अंदर चल रहा है। जबकि Nginx संलग्न मोड में चलता है, यह केवल तब तक चलता रहेगा जब तक यह खुला है। आप दबाकर Nginx कंटेनर से बाहर निकल सकते हैं Ctrl + C आपके टर्मिनल में.

बैकग्राउंड में कंटेनर कैसे चलाएं

पृष्ठभूमि में Nginx चलाने के लिए, हम एक और ध्वज जोड़ेंगे, -डी, अलग मोड के लिए. यह आपके टर्मिनल से कंटेनर को अलग करना शुरू कर देगा, जिसका अर्थ है कि यह पृष्ठभूमि में है। उदाहरण के लिए:

$ sudo docker run -d -p 80:80 nginx

आप सिस्टम पर चल रहे कंटेनरों को सूचीबद्ध कर सकते हैं। ध्यान दें कि आपका Nginx कंटेनर अब पृष्ठभूमि में कैसे चल रहा है और उसे एक आईडी दी गई है।

$ sudo docker ps

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

$ sudo docker kill 

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

कंटेनरों के साथ गहराई तक गोता लगाना

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