डॉकटर कंटेनर क्या है? - डॉकटर का उपयोग करके अपने आवेदन को नियंत्रित करें



डॉक कंटेनर कंटेनर के अंदर एप्लिकेशन बनाने, तैनात करने और चलाने के लिए वर्चुअल मशीन का एक हल्का वैकल्पिक समाधान है।

खैर, मुझे उम्मीद है कि आपने मेरे पिछले ब्लॉगों को पढ़ा होगा डॉकटर जहां मैंने डॉकर की मूल बातें कवर की हैं। यहाँ, इस डॉकटर कंटेनर ब्लॉग में मैं इस बारे में चर्चा करूँगा कि डॉकटर कंटेनर क्या हैं और यह कैसे काम करता है। अधिकतर, हम डॉकर के हैंड्स-ऑन और उपयोग-मामलों पर ध्यान केंद्रित करेंगे।

मैंने इस डॉकटर कंटेनर ब्लॉग के लिए विषयों को नीचे सूचीबद्ध किया है:





  • हमें डॉकटर कंटेनरों की आवश्यकता क्यों है?
  • डॉकटर कंटेनर कैसे काम करते हैं?
  • डॉकटर कंटेनर का उपयोग-मामले

हमें डॉकटर कंटेनरों की आवश्यकता क्यों है?

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

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



नीचे दिए गए उदाहरण पर विचार करें:

ऑनलाइन शॉपिंग ऐप - डॉकटर कंटेनर - एडुर्का

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



वैसे, इस वास्तुकला के बहुत सारे लाभ हैं:

  • यहां तक ​​कि अगर आपका एक माइक्रोसर्विस विफल रहता है, तो आपका पूरा आवेदन काफी हद तक अप्रभावित है।
  • इसे मैनेज करना ज्यादा आसान है

कई अन्य लाभ भी हैं, मैं इस पोस्ट में माइक्रोसॉफ़्ट के बारे में बहुत विस्तार से नहीं जाना। लेकिन, जल्द ही मैं माइक्रोसर्विस पर कुछ ब्लॉगों के साथ आऊंगा।

जावा में टाइपकास्ट कैसे करें

इस आर्किटेक्चर में, हम CentOS Virtual Machines का उपयोग कर रहे थे। उन वर्चुअल मशीनों को लंबी स्क्रिप्ट लिखकर कॉन्फ़िगर किया गया था। खैर, उन VMs को कॉन्फ़िगर करना एकमात्र समस्या नहीं थी।

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

दूसरी समस्या बहुत आम है, मुझे पता है कि आप में से बहुत से लोग इससे संबंधित हो सकते हैं। एप्लिकेशन डेवलपर के लैपटॉप में काम करता है लेकिन परीक्षण या उत्पादन में नहीं। यह एक सुसंगत कंप्यूटिंग वातावरण नहीं रखने के कारण हो सकता है। नीचे दिए गए चित्र पर विचार करें:

इसके अलावा भी कई अन्य समस्याएं थीं, लेकिन मुझे लगता है, ये समस्याएं मेरे लिए डॉकटर कंटेनरों की आवश्यकता को समझाने के लिए पर्याप्त हैं।

जानें कैसे डॉकटर कंटेनर वर्चुअल मशीनों से बेहतर हैं

इसलिए, कल्पना करें कि मैं अपने सभी वीएम को 8 जीबी रैम दे रहा हूं, और मेरे पास 5 वर्चुअल सर्वर हैं जो विभिन्न वर्चुअल मशीनों पर चल रहे हैं। उस स्थिति में, इन वीएम को 40 जीबी रैम की आवश्यकता होगी। खैर, अब मुझे अपने होस्ट मशीन के कॉन्फ़िगरेशन को बहुत अधिक करने की आवश्यकता है, मेरे होस्ट मशीन में लगभग 44 जीबी रैम होनी चाहिए। जाहिर है, यह इस तरह की वास्तुकला के लिए एक स्थायी समाधान नहीं है क्योंकि, मैं यहां बहुत सारे संसाधनों को बर्बाद कर रहा हूं।

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

क्या होगा अगर मैं 100 वीएम का उपयोग कर रहा हूं, तो प्रत्येक वीएम को कॉन्फ़िगर करने में बहुत समय लगेगा, और साथ ही साथ यह त्रुटि का भी खतरा है।

अब, समझते हैं कि डॉकर कंटेनर क्या है और यह कैसे काम करता है, और इसने मेरी समस्या को कैसे हल किया।

डॉकटर कंटेनर क्या है?

डॉकटर एक उपकरण है जिसे कंटेनरों का उपयोग करके एप्लिकेशन बनाना, तैनात करना और चलाना आसान बनाना है।

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

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

आइए अब समझते हैं, डॉकटर कंटेनर कैसे काम करता है।

डॉकटर कंटेनर कैसे काम करता है?

नीचे दिए गए आरेख मूल रूप से, डॉकर का उपयोग करने का एक तरीका है। और मैं मान रहा हूं कि, आपको डॉकर इमेज और डॉकरफाइल के बारे में एक विचार है।

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

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

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

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

नीचे चित्र की व्याख्या है:

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

यह कहना वास्तव में उचित होगा कि, डॉकर ने मेरे जीवन को आसान बना दिया।

खैर, यह मेरी कंपनी की कहानी थी, आइए इंडियाना यूनिवर्सिटी के केस-स्टडी को देखें। डॉकटर ने उनकी समस्याओं को कैसे हल किया।

इंडियाना यूनिवर्सिटी केस-स्टडी:

इंडियाना विश्वविद्यालय संयुक्त राज्य अमेरिका के इंडियाना राज्य में एक बहु-परिसर सार्वजनिक विश्वविद्यालय प्रणाली है।

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

वे VM में अनुप्रयोगों को तैनात करने के लिए कस्टम स्क्रिप्ट का उपयोग कर रहे थे।

उनके वातावरण को उनके जावा-आधारित अनुप्रयोगों के लिए अनुकूलित किया गया था। उनके बढ़ते वातावरण में नए उत्पाद शामिल हैं जो केवल जावा आधारित नहीं हैं। अपने छात्रों को सर्वोत्तम अनुभव देने के लिए, विश्वविद्यालय को अनुप्रयोगों का आधुनिकीकरण शुरू करने की आवश्यकता थी।

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

प्रकार रूपांतरण c ++

एसएसएन और छात्र स्वास्थ्य डेटा जैसे छात्र के डेटा के लिए सुरक्षा की आवश्यकता थी।

उपाय:

डॉकर डेटा सेंटर (डीडीसी) द्वारा सभी समस्याओं का समाधान किया गया था, नीचे दिए गए आरेख पर विचार करें:

डॉकर ट्रस्टेड रजिस्ट्री - यह डॉकर इमेजेस को स्टोर करता है।

यूसीपी (यूनिवर्सल कंट्रोल प्लेन) वेब यूआई - एक ही स्थान से पूरे क्लस्टर के प्रबंधन में मदद करता है। सेवाओं को यूसीपी वेब यूआई का उपयोग करके तैनात किया जाता है, डॉकटर चित्रों का उपयोग करके जो डीटीआर (डॉकर ट्रस्टेड रजिस्ट्री) में संग्रहीत होते हैं।

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

यूसीपी और डीटीआर अपने एलडीएपी सर्वर के साथ एकीकृत होकर अपने अनुप्रयोगों तक शीघ्रता से पहुंच का प्रावधान करते हैं।

मैं उम्मीद कर रहा हूं कि आप लोगों ने डॉकर की मूल बातें जानने के लिए पिछले ब्लॉग पढ़े होंगे।

अब, मैं आपको समझाऊंगा कि कैसे हम मल्टी कंटेनर एप्लिकेशन के लिए डोकर कंपोज का उपयोग कर सकते हैं।

डॉकटर हैंड्स-ऑन:

मैं मान रहा हूं कि आपने डॉकर स्थापित किया हैमैं इस पोस्ट में Docker Compose का उपयोग करूंगा, नीचे मैंने Docker Compose का एक छोटा सा परिचय दिया है।

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

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

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

आइए हम एक और उदाहरण लेते हैं:

मान लीजिए आप एक ब्लॉग प्रकाशित करना चाहते हैं, इसके लिए आप CMS (Content Management System) का उपयोग करेंगे, और wordpress सबसे अधिक इस्तेमाल किया जाने वाला CMS है। मूल रूप से, आपको वर्डप्रेस के लिए एक कंटेनर की आवश्यकता होती है और बैक एंड के लिए आपको MySQL के रूप में एक और कंटेनर की आवश्यकता होती है, जिसे MySQL कंटेनर को वर्डप्रेस कंटेनर से जोड़ा जाना चाहिए। हमें Php Myadmin के लिए एक और कंटेनर की भी आवश्यकता है जो MySQL डेटाबेस से जुड़ा होगा, मूल रूप से, इसका उपयोग MySQL डेटाबेस तक पहुँचने के लिए किया जाता है।

मैं उपर्युक्त उदाहरण को व्यावहारिक रूप से कैसे निष्पादित करता हूं।

इसमें शामिल कदम:

  1. डॉकर कम्पोज़ स्थापित करें :
  2. वर्डप्रेस स्थापित करें: हम अधिकारी का उपयोग करेंगे वर्डप्रेस तथा MariaDB डॉकटर चित्र।
  3. MariaDB स्थापित करें: यह दुनिया के सबसे लोकप्रिय डेटाबेस सर्वरों में से एक है। इसे MySQL के मूल डेवलपर्स द्वारा बनाया गया है। मारियाबीडी को ओपन सोर्स सॉफ्टवेयर के रूप में विकसित किया गया है और एक रिलेशनल डेटाबेस के रूप में यह डेटा तक पहुंचने के लिए एक SQL इंटरफ़ेस प्रदान करता है।
  4. PhpMyAdmin स्थापित करें: यह PHP में लिखा गया एक मुफ्त सॉफ्टवेयर टूल है, जिसका उद्देश्य वेब पर MySQL के प्रशासन को संभालना है।
  5. वर्डप्रेस साइट बनाएँ:

आएँ शुरू करें!

डॉकर कम्पोज़ स्थापित करें:

पहले पायथन पिप स्थापित करें:

sudo apt-get install अजगर-पाइप

अब, आप डॉकर कम्पोज़ स्थापित कर सकते हैं:

sudo pip इंस्टॉल डॉकटर-कम्पोज़

WordPress स्थापित करें:

एक वर्डप्रेस निर्देशिका बनाएँ:

mkdir वर्डप्रेस

इस वर्डप्रेस निर्देशिका दर्ज करें:

सीडी वर्डप्रेस /

इस निर्देशिका में एक डॉकर कम्पोज़ YAML फ़ाइल बनाएं, फिर इसे gedit का उपयोग करके संपादित करें:

सूदो गदित दोकर-रचना

उस yaml फ़ाइल में कोड की निचली पंक्तियों को चिपकाएँ:

wordpress: image: wordpress links: - wordpress_db: mysql port: - 8080: 80 wordpress_db: छवि: mariadb पर्यावरण: MYSQL_ROOT_PASSWORD: edureka phymyadmin: छवि: corbinu / docker-phpmyadmin लिंक: - wordpress_db: mysbb MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

मुझे पता है कि आप चाहते हैं कि मैं इस कोड की व्याख्या करूं, इसलिए मैं क्या करूंगा, मैं इस कोड के छोटे खंड ले लूंगा और आपको बताऊंगा कि क्या हो रहा है।

wordpress_db: ... पर्यावरण: MYSQL_ROOT_PASSWORD: edureka ...

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

WordPress: ... बंदरगाहों: - 8080: 80 ...

पहला पोर्ट नंबर होस्ट पर पोर्ट नंबर है, और दूसरा पोर्ट नंबर कंटेनर के अंदर का पोर्ट है। तो, यह कॉन्फ़िगरेशन कंटेनर के अंदर डिफ़ॉल्ट वेब सर्वर पोर्ट 80 पर होस्ट के पोर्ट 8080 पर फॉरवर्ड करता है।

phpmyadmin: छवि: corbinu / docker-phpmyadmin लिंक: - wordpress_db: mysql पोर्ट: - 8181: 80 पर्यावरण: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

यह सदस्य समुदाय सदस्य कोर्बिनु द्वारा docker-phpmyadmin को mysql नाम के साथ हमारे wordpress_db कंटेनर से जोड़ता है (होस्टनाम mysql के लिए phpmyadmin कंटेनर संदर्भ के अंदर से हमारे wordpress_db कंटेनर को अग्रेषित किया जाएगा), पोर्ट 8181 के पोर्ट 8181 पर इसके पोर्ट 80 को उजागर करता है। मेजबान प्रणाली, और अंत में हमारे मारियाबीडी उपयोगकर्ता नाम और पासवर्ड के साथ पर्यावरण चर के एक जोड़े को सेट करती है। यह छवि Wordpress_dbcontainer के वातावरण से MYSQL_ROOT_PASSWORD पर्यावरण चर को स्वचालित रूप से नहीं पकड़ती है, जिस तरह से WordPress छवि करता है। हमें वास्तव में MYSQL_ROOT_PASSWORD: wordpress_db कंटेनर से edureka लाइन, और उपयोगकर्ता नाम को रूट पर कॉपी करना होगा।

अब आवेदन समूह शुरू करें:

docker-compose अप -d

आपको बस इतना करना है आप इस तरह से जितने चाहें उतने कंटेनर जोड़ सकते हैं, और किसी भी तरह से सभी को लिंक कर सकते हैं।

अब, ब्राउज़र में अपने सार्वजनिक आईपी या होस्ट नाम का उपयोग करके 8080 को पोर्ट करें, जैसा कि नीचे दिखाया गया है:

लोकलहोस्ट: 8080

इस फॉर्म को भरें और इंस्टॉल वर्डप्रेस पर क्लिक करें।

एक बार जब यह समाप्त हो जाता है, तो अपने सर्वर के आईपी पते पर फिर से जाएं (इस बार पोर्ट 8181, जैसे कि लोकलहोस्ट: 8181) का उपयोग करें। आपको phpMyAdmin लॉगिन स्क्रीन द्वारा बधाई दी जाएगी:

ऑब्जेक्ट जावा की प्रतिलिपि बनाएँ

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

यहाँ, मैं अपने डॉकर कंटेनर ब्लॉग को समाप्त करता हूँ। मुझे उम्मीद है कि आपने इस पद का आनंद लिया है। आप देख सकते हैं अन्य ब्लॉग श्रृंखला में भी, जो डॉकर की मूल बातों से संबंधित है।

यदि आपको यह डॉकटर कंटेनर ब्लॉग प्रासंगिक लगता है, तो देखें 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है। Edureka DevOps प्रमाणन प्रशिक्षण पाठ्यक्रम शिक्षार्थियों को विभिन्न DevOps प्रक्रियाओं में विशेषज्ञता हासिल करने में मदद करता है और कठपुतली, जेनकिंस, डॉकर, नागोइस, Ansible, शेफ, साल्टस्टैक और GIT जैसे एसडीएलसी में कई चरणों को स्वचालित करने के लिए।

मेरे लिए एक सवाल है? कृपया टिप्पणी अनुभाग में इसका उल्लेख करें और मैं आपके पास वापस आऊंगा।