सॉफ्टवेयर विकास की दुनिया इतनी तेजी से बढ़ रही है और विस्तार कर रही है कि हर दिन नए प्लेटफॉर्म और टूल लोकप्रिय हो रहे हैं। Docker उनमें से एक है, और यह नई पीढ़ी के डेवलपर्स के लिए मार्ग प्रशस्त कर रहा है। इस लेख में, हम यह पता लगाएंगे कि Docker और Docker Container क्या हैं, साथ ही उनके लाभ, उनका उपयोग कैसे करें, और अन्य विवरण क्या हैं। तो, बिना किसी और देरी के, आइए हमारे Docker Container अवलोकन में गहराई से उतरें।
यदि यह आपके और आपके ज्ञान के स्तर के लिए बहुत जटिल लगता है, तो अंत तक पढ़ें क्योंकि, लेख के निचले भाग में, हम एक सरल no-code विकल्प भी प्रदान कर रहे हैं जो शुरुआती, नागरिक डेवलपर्स और किसी के लिए अधिक उपयुक्त हो सकता है। जिसे सबसे आसानी से और जल्दी से एक एप्लिकेशन विकसित करने की आवश्यकता है।
Docker Container क्या है?
Docker Container क्या है, इस पर चर्चा करने से पहले, हमें एक कदम पीछे हटना होगा और यह बताना होगा कि Docker क्या है। Docker डेवलपर्स के लिए एक ओपन-सोर्स प्लेटफॉर्म है। Docker के साथ, एप्लिकेशन को कंटेनर के रूप में, इसकी सभी निर्भरताओं के साथ पैक किया जा सकता है। इस प्रणाली के साथ, प्रत्येक एप्लिकेशन एक अलग वातावरण में काम कर सकता है: प्रत्येक कंटेनर स्वतंत्र होता है और इसमें इसकी निर्भरता और पुस्तकालयों के साथ एप्लिकेशन होता है। एप्लिकेशन, इस तरह, एक दूसरे के साथ हस्तक्षेप नहीं करेंगे, और डेवलपर उनमें से प्रत्येक पर स्वतंत्र रूप से काम कर सकता है। जब टीम वर्क की बात आती है तो Docker Container भी महत्वपूर्ण और सहायक होते हैं।
एक डेवलपर, उदाहरण के लिए, एक कंटेनर विकसित कर सकता है और इसे टीम को दे सकता है। टीम पहले प्रोग्रामर द्वारा विकसित पूरे वातावरण की नकल करते हुए कंटेनर को चलाने में सक्षम होगी।
डॉकर वास्तुकला
डॉकर एक क्लाइंट-सर्वर आर्किटेक्चर को तैनात करता है जो निम्नलिखित "ईंटों" के साथ काम करता है:
- Docker Daemon: यह Docker क्लाइंट के अनुरोधों को सुनता है और कंटेनर और छवियों, और वॉल्यूम और नेटवर्क जैसी वस्तुओं का प्रबंधन करता है।
- Docker क्लाइंट: यह है कि उपयोगकर्ता Docker प्लेटफॉर्म के साथ कैसे इंटरैक्ट करता है।
- डॉकर हब: यह एक रजिस्ट्री है (रजिस्ट्री छवियों को संग्रहीत करती है, नीचे देखें) जो सार्वजनिक है, जिसका अर्थ है कि कोई भी डॉकर उपयोगकर्ता इसे एक्सेस कर सकता है और वहां छवियों की खोज कर सकता है। डॉकर डिफ़ॉल्ट रूप से डॉकर हब में छवियों की तलाश करेगा, लेकिन आप एक निजी रजिस्ट्री को सेट और उपयोग भी कर सकते हैं।
- Docker छवियां: वे कंटेनर बनाने के लिए टेम्पलेट हैं। कंटेनर छवियां कुछ अनुकूलन के साथ अन्य कंटेनर छवियों पर आधारित हो सकती हैं। अन्य उपयोगकर्ताओं द्वारा बनाई गई और सार्वजनिक रजिस्ट्रियों पर उपलब्ध छवियों का उपयोग करने के अलावा, आप अपनी छवियां बना सकते हैं और उन्हें अपनी निजी रजिस्ट्री में संग्रहीत कर सकते हैं या उन्हें सार्वजनिक रूप से साझा कर सकते हैं।
- Docker कंटेनर: वे कंटेनर छवियों के चलने योग्य उदाहरण हैं। प्रत्येक चलने वाला कंटेनर अन्य सभी से अच्छी तरह से अलग है, लेकिन आप अपना आवेदन बनाने के लिए उन्हें इकट्ठा भी कर सकते हैं। कंटेनरों को अलग-अलग चल रहे सॉफ़्टवेयर या उसी एप्लिकेशन के बिल्डिंग ब्लॉक के रूप में देखा जा सकता है।
अब जब आप जानते हैं कि सब कुछ क्या है और क्या करता है, तो आप Docker आर्किटेक्चर को बेहतर ढंग से समझ सकते हैं: हमारे पास Docker क्लाइंट है जो डॉकर डेमन से "बात करता है", जो कि Docker Container बनाने और चलाने से संबंधित है। डॉकर क्लाइंट, विशेष रूप से, नेटवर्क इंटरफेस या UNIX सॉकेट पर एक आरईएसटी एपीआई का उपयोग करके Docker Daemon से संचार करता है। एक डॉकर क्लाइंट एक से अधिक Docker Daemon के साथ संचार कर सकता है।
हमें Docker कंटेनर की आवश्यकता क्यों है?
सिद्धांत जो डॉकर कंटेनरों का आधार है और उनकी तैनाती कंटेनरीकरण है। इसके महत्व और लाभों को समझने के लिए, कंटेनरीकरण के बिना विकासशील परिदृश्य का वर्णन करना उपयोगी हो सकता है।
कंटेनरीकरण से पहले
डेवलपर्स हमेशा अलग-अलग वातावरण में अनुप्रयोगों पर काम करना चाहते हैं ताकि वे एक दूसरे के साथ हस्तक्षेप न करें। कंटेनरीकरण से पहले, अनुप्रयोगों और उनकी निर्भरता को अलग करने का एकमात्र तरीका उनमें से प्रत्येक को एक अलग वर्चुअल मशीन पर रखना था।
इस प्रकार, अनुप्रयोग समान हार्डवेयर पर चलते हैं; अलगाव आभासी है। हालाँकि, वर्चुअलाइजेशन की कई सीमाएँ हैं (विशेषकर जब हम इसकी खोज करने वाले हैं जब हम इसकी तुलना कंटेनरीकरण से करते हैं)। सबसे पहले, वर्चुअल मशीनें आकार में भारी होती हैं। दूसरा, कई वर्चुअल मशीन चलाने से उनमें से प्रत्येक का प्रदर्शन अस्थिर हो जाता है।
जब अपडेट, पोर्टेबिलिटी और एकीकरण की बात आती है तो वर्चुअल मशीन के उपयोग से संबंधित अन्य समस्याएं भी होती हैं, और बूटअप प्रक्रिया कभी-कभी बहुत समय लेने वाली हो सकती है। इन समस्याओं ने डेवलपर्स के समुदाय को एक नया समाधान बनाने के लिए प्रेरित किया। और नया समाधान कंटेनरीकरण है।
कन्टेनरीकरण
कंटेनरीकरण भी एक प्रकार का वर्चुअलाइजेशन है, लेकिन यह वर्चुअलाइजेशन को ऑपरेटिंग सिस्टम के स्तर पर लाता है। इसका मतलब यह है कि वर्चुअलाइजेशन, वर्चुअल मशीन के उपयोग के साथ, वर्चुअल हार्डवेयर बनाता है, कंटेनराइजेशन एक वर्चुअल ऑपरेटिंग सिस्टम बनाता है।
आभासी मशीनों के विपरीत, कंटेनर अधिक कुशल होते हैं क्योंकि:
- वे एक होस्ट ऑपरेटिंग सिस्टम का उपयोग करते हैं और इसलिए, कोई अतिथि ऑपरेटिंग सिस्टम नहीं है;
- वे जरूरत पड़ने पर प्रासंगिक पुस्तकालयों और संसाधनों को साझा करते हैं, जिससे निष्पादन बहुत तेज हो जाता है।
- क्योंकि सभी कंटेनर एक ही होस्ट ऑपरेटिंग सिस्टम को साझा करते हैं, बूटअप प्रक्रिया भी बहुत तेज है (इसमें कुछ सेकंड की आवश्यकता हो सकती है!)
दूसरे शब्दों में, कंटेनरीकरण के साथ, हमारे पास एक विकासशील पर्यावरण संरचना है जो इस तरह दिखती है:
- आधार पर एक साझा होस्ट ऑपरेटिंग सिस्टम
- एक कंटेनर इंजन
- कंटेनर जिनमें केवल उनके एप्लिकेशन के विशिष्ट पुस्तकालय और निर्भरताएं होती हैं और जो एक दूसरे से पूरी तरह से अलग होते हैं।
आभासी मशीनों के साथ, संरचना निम्नलिखित होगी:
- एक मेजबान ऑपरेटिंग सिस्टम कर्नेल;
- प्रत्येक एप्लिकेशन के लिए एक (अलग) अतिथि ऑपरेटिंग सिस्टम;
- उनके पुस्तकालयों और निर्भरताओं के साथ विभिन्न अनुप्रयोग।
जैसा कि हमने उल्लेख किया है, दो प्रणालियों के बीच मुख्य अंतर कंटेनरीकरण मॉडल पर एक अतिथि ऑपरेटिंग सिस्टम की अनुपस्थिति है, जो सभी अंतर बनाता है।
Docker के लाभ
डॉकर कंटेनर एक ऐसा प्लेटफ़ॉर्म है जो आपको कंटेनरीकरण का फायदा उठाने की अनुमति देता है जैसा कि हमने इसका वर्णन किया है। अगर हमें डेवलपर्स के लिए इसके सभी लाभों को एक साथ रखना है, तो वे निम्नलिखित होंगे।
पृथक पर्यावरण और एकाधिक कंटेनर
डॉकर न केवल आपको कंटेनर बनाने और स्थापित करने की अनुमति देता है जो एक दूसरे से अलग होते हैं और एक दूसरे को परेशान किए बिना काम करने में सक्षम होते हैं, बल्कि यह आपको एक ही समय में और एक ही मेजबान पर कई कंटेनर स्थापित करने की अनुमति देता है। एकाधिक कंटेनरों में से प्रत्येक को केवल निर्दिष्ट संसाधनों तक पहुंचने की अनुमति है। इसके अलावा, जिस एप्लिकेशन की अब आपको आवश्यकता नहीं है, उसे समाप्त करने की प्रक्रिया भी आसान है: आपको केवल इसके कंटेनर को समाप्त करने की आवश्यकता है।
परिनियोजन गति
जैसा है वैसा ही संरचित होने के कारण (पिछले पैराग्राफ को देखें), डॉकर एप्लिकेशन परिनियोजन प्रक्रिया को बहुत तेज बनाता है (विकल्प की तुलना में, जो वर्चुअल मशीनों का उपयोग कर रहा है)। डॉकर कंटेनर इतना अच्छा प्रदर्शन करने का कारण यह है कि डॉकर प्रत्येक प्रक्रिया के लिए एक अलग कंटेनर बनाता है ताकि डॉकर कंटेनर ऑपरेटिंग सिस्टम में बूट न हो।
लचीलापन और मापनीयता
डॉकर कंटेनर आपके एप्लिकेशन में परिवर्तन करने की प्रक्रिया को बहुत आसान बनाता है। ऐसा इसलिए है क्योंकि जब आपको किसी एप्लिकेशन पर हस्तक्षेप करने की आवश्यकता होती है, तो आप बस इसके कंटेनर तक पहुंच सकते हैं, और यह किसी भी तरह से अन्य सभी को प्रभावित नहीं करेगा। डॉकर कंपोज़ कमांड टूल (निम्न पैराग्राफ देखें) किसी भी अन्य एप्लिकेशन डेवलपमेंट दृष्टिकोण के साथ लचीलेपन और मापनीयता को असंभव तरीकों से बढ़ाता है।
सुवाह्यता
सॉफ्टवेयर कंटेनरों के भीतर बनाए गए एप्लिकेशन बहुत अच्छी तरह से पोर्टेबल हैं। जब तक होस्ट ऑपरेटिंग सिस्टम डॉकर को सपोर्ट करता है, तब तक डॉकर कंटेनर किसी भी प्लेटफॉर्म पर चल सकते हैं। जब आपने कंटेनर के भीतर अपना एप्लिकेशन बना लिया है, तो आप इसे किसी भी प्लेटफ़ॉर्म पर ले जा सकते हैं जो डॉकर का समर्थन करता है, और यह उन सभी पर समान रूप से प्रदर्शन करेगा।
सुरक्षा
डॉकर कंटेनरों ने सुरक्षा बढ़ाई क्योंकि:
- एक एप्लिकेशन (और इसकी संभावित समस्याएं) किसी अन्य को प्रभावित नहीं करती हैं।
- ट्रैफिक कोर्स पर डेवलपर का पूरा नियंत्रण होता है।
- प्रत्येक चल रहे कंटेनर को संसाधनों का एक अलग सेट सौंपा गया है।
- एक एप्लिकेशन प्राधिकरण के बिना किसी अन्य एप्लिकेशन के डेटा तक नहीं पहुंच सकता है।
डॉकर कंपोज़ क्या है?
डॉकर कंपोज़ एक डॉकर कमांड है जो डॉकर और कंटेनरीकरण की "शक्ति" को दूसरे स्तर पर लाता है। इस उपकरण के साथ, आपकी एप्लिकेशन विकास प्रक्रिया तेज और आसान हो सकती है। डॉकर कंपोज़ टूल एक कमांड लाइन टूल है और यह जो करता है वह कई कंटेनर लेता है और उन्हें एक एप्लिकेशन में इकट्ठा करता है। एप्लिकेशन को तब एक ही होस्ट पर चलाया जा सकता है।
डॉकर कंपोज़ के साथ, आपके पास अपने जटिल एप्लिकेशन डेवलपमेंट प्रोजेक्ट को छोटे में विभाजित करने की संभावना है। आप अलग-अलग पहलुओं पर अलग-अलग काम कर सकते हैं, और अंत में आप उन्हें अपना अंतिम वेब ऐप या अन्य एप्लिकेशन बनाने के लिए इकट्ठा कर सकते हैं।
डॉकर कंपोज़ का उपयोग करने का अर्थ यह भी है कि आप इस प्रोजेक्ट के लिए अपने द्वारा बनाए गए कंटेनर को अन्य विभिन्न प्रोजेक्ट्स में उपयोग करने में सक्षम होंगे। इसका मतलब यह भी है कि जब आपको किसी एक पहलू को अपडेट करने की आवश्यकता होती है, तो आप पूरे एप्लिकेशन डेवलपमेंट प्रोजेक्ट को प्रभावित किए बिना उस पर काम कर सकते हैं।
डॉकर कंटेनर का उपयोग करने के चरण
इस लेख को पढ़कर, आप पहले ही डॉकर के साथ अनुप्रयोग विकास की दुनिया में अपना पहला कदम रख चुके हैं। यदि आप इसके सभी पहलुओं के बारे में ज्ञान नहीं रखते हैं तो आप इतने शक्तिशाली लेकिन जटिल उपकरण का उपयोग नहीं कर सकते। अब, एक बार जब आप अपने कंप्यूटर पर डॉकर स्थापित कर लेते हैं (यह मैक, विंडोज और लिनक्स के लिए उपलब्ध है), तो आपके अगले चरण निम्नलिखित हैं।
- कंटेनर कैसे बनाएं और चलाएं
- अनुप्रयोगों को कैसे परिनियोजित करें
- डॉकर कंपोज़ का उपयोग करके एप्लिकेशन कैसे चलाएं
डॉकर का उपयोग करने के कई फायदों में से एक यह है कि ऑनलाइन विस्तृत दस्तावेज उपलब्ध हैं, और इसे डॉकर टीम द्वारा स्वयं संशोधित और प्रकाशित किया जाता है (इसलिए यह बहुत विश्वसनीय है)। आप शुरुआत में और अपनी एप्लिकेशन डेवलपमेंट यात्रा के दौरान उनके दस्तावेज़ीकरण से पूरी तरह संबंधित हो सकते हैं। हालांकि, यहां, हम इन दो चरणों से शुरू करने की अनुशंसा करना चाहेंगे:
ट्यूटोरियल शुरू करें
डॉकर में नए उपयोगकर्ताओं के लिए एक अंतर्निहित ट्यूटोरियल है। इसे लॉन्च करने के लिए, एक कमांड प्रॉम्प्ट खोलें और यह कमांड टाइप करें (आप इसे कॉपी और पेस्ट कर सकते हैं):
डॉकर रन-डी-पी 80:80 डॉकर/गेटिंग-स्टार्ट
कुछ चीजें हैं जो केवल इस आदेश पर एक नज़र डालने से सीखी जा सकती हैं:
- "-" पृष्ठभूमि में कंटेनर चलाएँ;
- -p 80:80 मैप्स पोर्ट 80 को होस्ट पर पोर्ट 80 कंटेनर पर;
- docker/getting-started छवि का उपयोग करने के लिए निर्दिष्ट करता है।
डैशबोर्ड को समझें
ट्यूटोरियल के माध्यम से जाने के बाद और डॉकर टीम द्वारा प्रदान किए गए दस्तावेज़ीकरण में खुदाई करने से पहले, यह महत्वपूर्ण है कि आप डॉकर डैशबोर्ड को समझें। यह एक पैनल है जो कंटेनर लॉग और उनके जीवन चक्र तक त्वरित पहुंच प्रदान करता है। उदाहरण के लिए, डैशबोर्ड से कंटेनरों को स्थानांतरित करना या हटाना बेहद आसान है।
डॉकर कंटेनर: क्या इसे अनुप्रयोग विकास ज्ञान की आवश्यकता है?
डॉकर, उसके कंटेनर और डॉकर कंपोज़ टूल का उपयोग करने के लिए प्रोग्रामिंग भाषाओं, फ्रेमवर्क और आर्किटेक्चर के कुछ ज्ञान की आवश्यकता होती है। डॉकर प्रक्रिया को आसान बना सकता है, लेकिन केवल उन लोगों के लिए जो प्रोग्रामिंग और अनुप्रयोगों को तैनात करने से पहले से परिचित हैं। नौसिखियों, विकास नागरिकों, या अनुप्रयोगों को तैनात करने का सबसे आसान तरीका खोजने वाले किसी भी व्यक्ति के लिए, हालांकि, एक वैध विकल्प है: नो-कोड सॉफ्टवेयर डेवलपमेंट और AppMaster ।
AppMaster, वास्तव में, एक विश्व-अग्रणी no-code प्लेटफ़ॉर्म है जो आपको मैन्युअल रूप से कोड लिखे बिना एक वेब ऐप, मोबाइल ऐप और बैकएंड बनाने की अनुमति देता है। AppMaster आपके प्रोजेक्ट के लिए बिल्डिंग ब्लॉक्स के साथ-साथ एक विज़ुअल इंटरफ़ेस प्रदान करेगा जहाँ आप उन्हें drag-and-drop सिस्टम के साथ असेंबल कर सकते हैं। जब आप इस तरह अपना सॉफ़्टवेयर बनाते हैं, तो AppMaster स्वचालित रूप से आपके लिए स्रोत कोड बना देगा। स्रोत कोड किसी भी क्षण पहुंच योग्य है, और यह निर्यात योग्य भी है।
AppMaster के सॉफ़्टवेयर बिल्डिंग ब्लॉक किसी तरह से डॉकर छवियों के समान हो सकते हैं, लेकिन वे आपको अनमोल लाभ प्रदान करते हैं कि उन्हें बिना सोर्स कोड लिखे ही असेंबल किया जा सकता है। यदि आप एक नौसिखिया हैं तो ऐपमास्टर आपके लिए अधिक उपयुक्त मंच हो सकता है।
दिलचस्प तथ्य AppMaster एक डॉकटर कंटेनर का भी उपयोग करता है। डिफ़ॉल्ट रूप से, सभी क्लाइंट एप्लिकेशन स्वचालित रूप से AppMaster द्वारा पृथक Docker Container में होस्ट किए जाते हैं। आमतौर पर, जब कोई क्लाइंट 30 सेकंड से भी कम समय में प्रकाशित बटन पर क्लिक करता है, तो AppMaster स्रोत कोड उत्पन्न करता है, संकलन करता है, परीक्षण करता है और इसे एक Docker Container में पैकेज करता है। प्लेटफ़ॉर्म इस डॉकटर Docker Container को स्थानीय AppMaster के डॉकटर को भेजता है, जो प्लेटफ़ॉर्म में एक हब है। Harbor द्वारा उपयोग किया जाने AppMaster एक ओपन-सोर्स समाधान है। और उसके बाद, AppMaster लक्ष्य सर्वर को एक कमांड भेजता है ताकि वह इस कंटेनर को उठाकर लॉन्च करे।
निष्कर्ष
डेवलपर्स के हाथों में डॉकर एक महत्वपूर्ण उपकरण है। जैसा कि हमने देखा है, यह उन कई सीमाओं को हल करता है जो पुराने वर्चुअल मशीन दृष्टिकोण में थीं। हालांकि, यह अभी भी विशेषज्ञ डेवलपर्स के लिए उपयुक्त एक विधि है: आखिरकार, जब आप टेम्पलेट्स और छवियों का उपयोग कर सकते हैं, तब भी आपको डॉकर प्लेटफॉर्म के भीतर बहुत सी चीजें करने के लिए कोड लिखना होगा। यदि आप एक आसान विकल्प की तलाश कर रहे हैं, यदि आप कोड लिखने से बिल्कुल भी बचना चाहते हैं, तो AppMaster और no-code दृष्टिकोण आपके लिए सही समाधान हैं।