[ध्यान दें, यह उत्तर लिनक्स कंटेनरों पर केंद्रित है और अन्य ऑपरेटिंग सिस्टम पर पूरी तरह लागू नहीं हो सकता है। ]
कंटेनर क्या है?
यह एक ऐप है : एक कंटेनर अनुप्रयोगों को चलाने का एक तरीका है जो एक दूसरे से अलग-थलग हैं। कई ऑपरेटिंग सिस्टम को चलाने के लिए हार्डवेयर का वर्चुअलाइजेशन करने के बजाय, कंटेनर कई एप्लिकेशन को चलाने के लिए ऑपरेटिंग सिस्टम के वर्चुअलाइजेशन पर भरोसा करते हैं। इसका मतलब है कि आप VM की तुलना में एक ही हार्डवेयर पर अधिक कंटेनर चला सकते हैं क्योंकि आपके पास केवल OS की एक प्रति चल रही है, और आपको अपने ऐप के प्रत्येक उदाहरण के लिए मेमोरी और CPU कोर को प्रचारित करने की आवश्यकता नहीं है। किसी भी अन्य ऐप की तरह, जब एक कंटेनर को सीपीयू या मेमोरी की आवश्यकता होती है, तो यह उन्हें आवंटित करता है, और फिर उन्हें तब किया जाता है, जब अन्य ऐप्स को बाद में उन्हीं सीमित संसाधनों का उपयोग करने की अनुमति मिलती है।
वे कर्नेल नेमस्पेस का लाभ उठाते हैं : प्रत्येक कंटेनर को डिफ़ॉल्ट रूप से एक वातावरण मिलेगा जहां निम्नलिखित नाम दिए गए हैं:
- माउंट: फाइल सिस्टम,
/कंटेनर में से अलग होगा/ में होस्ट ।
- PID: प्रोसेस आईडी, कंटेनर में pid 1 आपका लॉन्च किया गया अनुप्रयोग है, यह pid होस्ट से देखने पर अलग होगा।
- नेटवर्क: कंटेनर अपने स्वयं के लूपबैक इंटरफ़ेस (127.0.0.1) और डिफ़ॉल्ट रूप से एक निजी आईपी के साथ चलते हैं। डॉकर अपने निजी लान में एक साथ कई कंटेनरों को जोड़ने के लिए लिनक्स ब्रिज नेटवर्क जैसी तकनीकों का उपयोग करता है।
- IPC: इंटरप्रोसेस संचार
- यूटीएस: इसमें होस्टनाम शामिल है
- उपयोगकर्ता: आप वैकल्पिक रूप से होस्ट के सभी उपयोगकर्ता आईडी को ऑफ़सेट कर सकते हैं
इनमें से प्रत्येक नेमस्पेस एक कंटेनर को भी होस्ट पर, या अन्य कंटेनरों में फाइलसिस्टम या प्रक्रियाओं जैसी चीजों को देखने से रोकता है, जब तक कि आप स्पष्ट रूप से उस अलगाव को नहीं हटाते हैं।
और अन्य लिनक्स सुरक्षा उपकरण : कंटेनर कंटेनर के अंदर अन्य उपयोगकर्ताओं को सीमित करने के लिए SELinux, AppArmor, Capabilities, और Seccomp जैसे अन्य सुरक्षा सुविधाओं का भी उपयोग करते हैं, रूट उपयोगकर्ता सहित, कंटेनर से बचने में सक्षम होते हैं या मेजबान को नकारात्मक रूप से प्रभावित करते हैं।
पोर्टेबिलिटी के लिए अपनी एप्लिकेशन को उनकी निर्भरता के साथ पैकेज करें : किसी एप्लिकेशन को कंटेनर में पैक करने में न केवल एप्लिकेशन को असेंबल करना शामिल है, बल्कि उस एप्लिकेशन को पोर्टेबल छवि में चलाने के लिए सभी निर्भरताएं आवश्यक हैं। यह छवि एक कंटेनर बनाने के लिए उपयोग की जाने वाली आधार फाइलसिस्टम है। क्योंकि हम केवल एप्लिकेशन को अलग कर रहे हैं, इस फाइलसिस्टम में कर्नेल और अन्य OS उपयोगिताओं को शामिल नहीं किया गया है जो संपूर्ण ऑपरेटिंग सिस्टम को वर्चुअलाइज करने के लिए आवश्यक हैं। इसलिए, एक कंटेनर के लिए एक छवि एक बराबर आभासी मशीन के लिए एक छवि से काफी छोटी होनी चाहिए, जिससे यह पूरे नेटवर्क में नोड्स पर तैनात करने के लिए तेजी से होता है। नतीजतन, कंटेनर क्लाउड और रिमोट डेटा केंद्रों में एप्लिकेशन को तैनात करने के लिए एक लोकप्रिय विकल्प बन गए हैं।
क्या यह विकास के लिए समर्पित एक आभासी मशीन की जगह ले सकता है?
यह निर्भर करता है : यदि आपके विकास का वातावरण लिनक्स चल रहा है, और आपको या तो हार्डवेयर उपकरणों तक पहुंच की आवश्यकता नहीं है, या भौतिक हार्डवेयर तक सीधी पहुंच होना स्वीकार्य है, तो आपको लिनक्स कंटेनर में माइग्रेशन मिलेगा। एक डॉकटर कंटेनर के लिए आदर्श लक्ष्य वेब आधारित एपीआई (जैसे एक बाकी ऐप) जैसे एप्लिकेशन हैं, जो आप नेटवर्क के माध्यम से एक्सेस करते हैं।
कंपनियों में डॉकर का उपयोग करने का, सरल शब्दों में, उद्देश्य क्या है? मुख्य फायदा ?
देव या ऑप्स : डॉकर को आमतौर पर दो रास्तों में से एक वातावरण में लाया जाता है। अधिक तेजी से विकसित होने और स्थानीय रूप से अपने आवेदन का परीक्षण करने के तरीके की तलाश करने वाले डेवलपर्स, और वर्चुअल मशीनों की तुलना में कम हार्डवेयर पर अधिक कार्यभार चलाने के लिए संचालन करना संभव होगा।
या देवोप्स : आदर्श लक्ष्यों में से एक डॉक का लाभ उठाने के लिए तुरंत CI / CD परिनियोजन उपकरण से, एप्लिकेशन को संकलित करना और तुरंत एक छवि बनाना जो कि विकास, CI, ठेस, आदि के लिए तैनात है, कंटेनर अक्सर एप्लिकेशन को स्थानांतरित करने के लिए समय कम करते हैं। कोड चेक-इन से लेकर परीक्षण के लिए उपलब्ध होने तक, डेवलपर्स को अधिक कुशल बनाता है। और जब ठीक से डिजाइन किया जाता है, तो वही छवि जिसे डेवलपर्स और सीआई उपकरण द्वारा परीक्षण और अनुमोदित किया गया था, उत्पादन में तैनात किया जा सकता है। चूंकि उस छवि में सभी एप्लिकेशन निर्भरताएं शामिल हैं, इसलिए उत्पादन में कुछ टूटने का जोखिम जो विकास में काम करता है, काफी कम हो जाता है।
स्केलेबिलिटी : कंटेनरों का एक अंतिम मुख्य लाभ जिसका मैं उल्लेख करूंगा कि वे क्षैतिज स्केलेबिलिटी को ध्यान में रखकर बनाए गए हैं। जब आपके पास भारी भार के तहत स्टेटलेस ऐप्स होते हैं, तो कंटेनर उनके छोटे छवि आकार और कम ओवरहेड के कारण बड़े पैमाने पर आसान और तेज़ होते हैं। इस कारण से आप Google और नेटफ्लिक्स जैसी कई बड़ी वेब आधारित कंपनियों द्वारा उपयोग किए जा रहे कंटेनरों को देखते हैं।