डॉकर (सॉफ्टवेयर)

डॉकर एक सेवा (PaaS) उत्पादों के रूप में प्लेटफ़ॉर्म का एक सेट है जो 'कंटेनर (वर्चुअलाइज़ेशन)' नामक पैकेज में सॉफ़्टवेयर वितरित करने के लिए OS-स्तर वर्चुअलाइज़ेशन का उपयोग करता है। सेवा में निःशुल्क और प्रीमियम दोनों स्तर हैं। सॉफ्टवेयर जो कंटेनरों को होस्ट करता है उसे डॉकर इंजन कहा जाता है। इसे पहली बार 2013 में शुरू किया गया था और इसे डॉकर, इंक द्वारा विकसित किया गया है।

डॉकर एक ऐसा उपकरण है जिसका उपयोग हल्के कंटेनरों में अनुप्रयोगों की तैनाती को स्वचालित करने के लिए किया जाता है ताकि अनुप्रयोग विभिन्न वातावरणों में कुशलता से काम कर सकें।

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

ऑपरेशन
डॉकर एक एप्लिकेशन और उसकी निर्भरता को एक वर्चुअल कंटेनर में पैकेज कर सकता है जो किसी भी लिनक्स, विंडोज या मैकओएस कंप्यूटर पर चल सकता है। यह एप्लिकेशन को विभिन्न स्थानों पर चलने में सक्षम बनाता है, जैसे ऑन-प्रिमाइसेस सॉफ़्टवेयर | ऑन-प्रिमाइसेस, सार्वजनिक क्लाउड में (विकेन्द्रीकृत कंप्यूटिंग, वितरित कंप्यूटिंग और क्लाउड कम्प्यूटिंग देखें) या निजी क्लाउड। लिनक्स पर चलते समय, डॉकर लिनक्स कर्नेल (जैसे cgroups और कर्नेल लिनक्स नामस्थान) और एक संघ पर्वत | यूनियन-सक्षम फ़ाइल सिस्टम (जैसे ओवरलेएफएस) की संसाधन अलगाव सुविधाओं का उपयोग करता है। आभासी मशीनों को शुरू करने और बनाए रखने के ओवरहेड से बचने के लिए कंटेनरों को एक ही लिनक्स उदाहरण के भीतर चलाने की अनुमति देने के लिए। MacOS पर Docker कंटेनरों को चलाने के लिए एक Linux वर्चुअल मशीन का उपयोग करता है।

क्योंकि डॉकटर कंटेनर हल्के होते हैं, एक सर्वर या वर्चुअल मशीन एक साथ कई कंटेनर चला सकती है। 2018 के एक विश्लेषण में पाया गया कि एक विशिष्ट डॉकर उपयोग के मामले में प्रति होस्ट आठ कंटेनर चलाना शामिल है, और यह कि विश्लेषण किए गए एक चौथाई संगठन प्रति होस्ट 18 या अधिक चलाते हैं। इसे रास्पबेरी पाई जैसे सिंगल बोर्ड कंप्यूटर पर भी इंस्टॉल किया जा सकता है। Linux कर्नेल ज्यादातर नामस्थानों के लिए समर्थन करता है प्रोसेस ट्री, नेटवर्क, यूजर आईडी और माउंटेड फाइल सिस्टम सहित ऑपरेटिंग वातावरण के एक एप्लिकेशन के दृश्य को अलग करता है, जबकि कर्नेल के cgroups मेमोरी और सीपीयू के लिए सीमित संसाधन प्रदान करते हैं। संस्करण 0.9 के बाद से, डॉकर में अपना स्वयं का घटक शामिल है (जिसे कहा जाता हैlibcontainer) libvirt, LXC और systemd-nspawn के माध्यम से अमूर्त वर्चुअलाइजेशन इंटरफेस का उपयोग करने के अलावा, लिनक्स कर्नेल द्वारा सीधे प्रदान की गई वर्चुअलाइजेशन सुविधाओं का उपयोग करने के लिए।

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

लाइसेंसिंग मॉडल

 * डॉकर इंजन को अपाचे लाइसेंस 2.0 के तहत लाइसेंस दिया गया है। डॉकर डेस्कटॉप जीएनयू जनरल पब्लिक लाइसेंस के तहत लाइसेंस प्राप्त कुछ घटकों को वितरित करता है।
 * डॉकरफाइल फाइलों को ओपन-सोर्स लाइसेंस के तहत ही लाइसेंस दिया जा सकता है। यह महसूस करना महत्वपूर्ण है कि इस लाइसेंस स्टेटमेंट का दायरा केवल डॉकरफाइल है न कि कंटेनर इमेज।

घटक
सेवा की पेशकश के रूप में डॉकर सॉफ्टवेयर में तीन घटक होते हैं:


 * सॉफ्टवेयर: डॉकर डेमन (कंप्यूटिंग), जिसे कहा जाता है, एक सतत प्रक्रिया है जो डॉकर कंटेनरों का प्रबंधन करती है और कंटेनर ऑब्जेक्ट्स को संभालती है। डेमन डॉकर इंजन एपीआई के माध्यम से भेजे गए अनुरोधों को सुनता है। डॉकर क्लाइंट प्रोग्राम, जिसे कहा जाता है  , कमांड लाइन इंटरफेस (CLI) प्रदान करता है, जो उपयोगकर्ताओं को डॉकर डेमॉन के साथ इंटरैक्ट करने की अनुमति देता है।  * ऑब्जेक्ट्स: डॉकर ऑब्जेक्ट्स डॉकर में एप्लिकेशन को इकट्ठा करने के लिए उपयोग की जाने वाली विभिन्न संस्थाएं हैं। डॉकर वस्तुओं के मुख्य वर्ग चित्र, कंटेनर और सेवाएँ हैं। ** एक डॉकटर कंटेनर एक मानकीकृत, एन्कैप्सुलेटेड वातावरण है जो एप्लिकेशन चलाता है। डॉकटर एपीआई या कमांड-लाइन इंटरफेस का उपयोग करके एक कंटेनर का प्रबंधन किया जाता है। ** डॉकर इमेज एक रीड-ओनली टेम्प्लेट है जिसका इस्तेमाल कंटेनर बनाने के लिए किया जाता है। छवियों का उपयोग एप्लिकेशन को स्टोर और शिप करने के लिए किया जाता है। ** एक डॉकर सेवा कंटेनरों को कई डॉकर डेमॉन में स्केल करने की अनुमति देती है। परिणाम को एक झुंड के रूप में जाना जाता है, सहयोगी डेमॉन का एक सेट जो डॉकर एपीआई के माध्यम से संचार करता है। * रजिस्ट्रियाँ: एक डॉकर रजिस्ट्री डॉकर छवियों के लिए एक भंडार है। डॉकर क्लाइंट छवियों को डाउनलोड (पुल) करने के लिए रजिस्ट्रियों से जुड़ते हैं या उनके द्वारा बनाई गई छवियों को अपलोड (पुश) करते हैं। रजिस्ट्रियां सार्वजनिक या निजी हो सकती हैं। मुख्य सार्वजनिक रजिस्ट्री डॉकर हब है। डॉकर हब डिफ़ॉल्ट रजिस्ट्री है जहां डॉकर छवियों की तलाश करता है।  डॉकर रजिस्ट्रियां भी घटनाओं के आधार पर सूचनाएं बनाने की अनुमति देती हैं।

उपकरण

 * डॉकर कंपोज़ मल्टी-कंटेनर डॉकर एप्लिकेशन को परिभाषित करने और चलाने के लिए एक उपकरण है। यह एप्लिकेशन की सेवाओं को कॉन्फ़िगर करने के लिए YAML फ़ाइलों का उपयोग करता है और एक कमांड के साथ सभी कंटेनरों का निर्माण और स्टार्ट-अप प्रक्रिया करता है।  ई> सीएलआई उपयोगिता उपयोगकर्ताओं को एक साथ कई कंटेनरों पर कमांड चलाने की अनुमति देती है, उदाहरण के लिए, छवियों का निर्माण, अनुमापकता कंटेनर, रुके हुए कंटेनर चलाना, और बहुत कुछ। छवि हेरफेर, या उपयोगकर्ता-संवादात्मक विकल्पों से संबंधित आदेश डॉकर कंपोज़ में प्रासंगिक नहीं हैं क्योंकि वे एक कंटेनर को संबोधित करते हैं। Docker-compose.yml फ़ाइल का उपयोग एप्लिकेशन की सेवाओं को परिभाषित करने के लिए किया जाता है और इसमें विभिन्न कॉन्फ़िगरेशन विकल्प शामिल होते हैं। उदाहरण के लिए, द   विकल्प कॉन्फ़िगरेशन विकल्पों को परिभाषित करता है जैसे कि डॉकरफाइल पथ,   विकल्प एक को डिफ़ॉल्ट डॉकर कमांड को ओवरराइड करने की अनुमति देता है, और बहुत कुछ। डॉकर कंपोज़ (संस्करण 0.0.1) का पहला सार्वजनिक बीटा संस्करण 21 दिसंबर, 2013 को जारी किया गया था। पहला उत्पादन-तैयार संस्करण (1.0) 16 अक्टूबर 2014 को उपलब्ध कराया गया था। * डॉकर झुंड डॉकटर कंटेनरों के लिए देशी कंप्यूटर क्लस्टर कार्यक्षमता प्रदान करता है, जो डॉकर इंजनों के एक समूह को एकल वर्चुअल डॉकर इंजन में बदल देता है। डॉकर 1.12 और उच्चतर में, स्वार्म मोड को डॉकर इंजन के साथ एकीकृत किया गया है।    और> सीएलआई उपयोगिता उपयोगकर्ताओं को स्वार्म कंटेनर चलाने, डिस्कवरी टोकन बनाने, क्लस्टर में नोड्स सूचीबद्ध करने आदि की अनुमति देती है।    ई> सीएलआई उपयोगिता उपयोगकर्ताओं को झुंड में नोड्स को प्रबंधित करने के लिए विभिन्न कमांड चलाने की अनुमति देती है, उदाहरण के लिए, नोड्स को झुंड में सूचीबद्ध करना, नोड्स को अपडेट करना और झुंड से नोड्स को हटाना। डॉकर रफ़ (कंप्यूटर विज्ञान) आम सहमति (कंप्यूटर विज्ञान) एल्गोरिथम का उपयोग करके झुंडों का प्रबंधन करता है। रफट के अनुसार, अद्यतन किए जाने के लिए, अधिकांश झुंड नोड्स को अद्यतन पर सहमत होने की आवश्यकता है।  * डॉकटर वॉल्यूम डेटा की स्वतंत्र दृढ़ता की सुविधा देता है, जिससे कंटेनर के हटाए जाने या फिर से बनाए जाने के बाद भी डेटा बना रहता है।

इतिहास
डॉकर इंक की स्थापना कामेल फौनाडी, सोलोमन हाइक्स और सेबेस्टियन पहल ने की थी वाई कॉम्बिनेटर समर 2010 स्टार्टअप इनक्यूबेटर ग्रुप के दौरान और 2011 में लॉन्च किया गया। स्टार्टअप भी फाउंडर के डेन फर्स्ट कॉहोर्ट में 12 स्टार्टअप्स में से एक था। हाइक्स ने फ्रांस में dotCloud के भीतर एक आंतरिक परियोजना के रूप में डॉकर परियोजना शुरू की, एक सेवा के रूप में एक मंच | एक सेवा कंपनी के रूप में मंच।

डॉकर ने 2013 में PyCon में सांता क्लारा में जनता के लिए शुरुआत की। इसे मार्च 2013 में खुला स्त्रोत के रूप में जारी किया गया था। उस समय, यह LXC को अपने डिफ़ॉल्ट निष्पादन वातावरण के रूप में उपयोग करता था। एक साल बाद, संस्करण 0.9 की रिलीज़ के साथ, डॉकर ने LXC को अपने स्वयं के घटक, लिबकंटेनर के साथ बदल दिया, जिसे गो (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा में लिखा गया था।

2017 में, डॉकर ने खुले अनुसंधान और विकास के लिए मोबी प्रोजेक्ट बनाया।

गोद लेना

 * 19 सितंबर, 2013: Red Hat और Docker ने Fedora (ऑपरेटिंग सिस्टम), Red Hat Enterprise Linux (RHEL) और OpenShift के आसपास सहयोग की घोषणा की। * 15 अक्टूबर 2014: माइक्रोसॉफ्ट ने विंडोज सर्वर में डॉकर इंजन के एकीकरण के साथ-साथ विंडोज में डॉकर क्लाइंट भूमिका के लिए मूल समर्थन की घोषणा की। * नवंबर 2014: Amazon Elastic Compute Cloud (EC2) के लिए डॉकटर कंटेनर सेवाओं की घोषणा की गई। * 10 नवंबर 2014: डॉकर ने स्ट्रैटोस्केल के साथ साझेदारी की घोषणा की। * 4 दिसंबर 2014: आईबीएम ने डॉकर के साथ एक रणनीतिक साझेदारी की घोषणा की जो डॉकर को आईबीएम क्लाउड के साथ और अधिक निकटता से एकीकृत करने में सक्षम बनाती है। * 22 जून 2015: डॉकर और कई अन्य कंपनियों ने घोषणा की कि वे सॉफ्टवेयर कंटेनरों के लिए एक नए विक्रेता और ऑपरेटिंग-सिस्टम-स्वतंत्र मानक पर काम कर रहे हैं।  * दिसंबर 2015: Oracle क्लाउड ने Docker कंटेनर स्टार्टअप, StackEngine का अधिग्रहण करने के बाद Docker कंटेनर समर्थन जोड़ा।
 * अप्रैल 2016: विंडॉक्स, एक स्वतंत्र सॉफ्टवेयर विक्रेता ने विंडोज के लिए डॉकर के ओपन सोर्स प्रोजेक्ट का एक पोर्ट जारी किया, जो विंडोज सर्वर 2012 आर2 और सर्वर 2016 का समर्थन करता है, एसक्यूएल सर्वर 2008 के सभी संस्करणों के साथ। * मई 2016: विश्लेषण ने निम्नलिखित संगठनों को डॉकर के मुख्य योगदानकर्ताओं के रूप में दिखाया: डॉकर टीम, सिस्को सिस्टम्स, गूगल, हुवाई, आईबीएम, माइक्रोसॉफ्ट और रेड हैट। * 8 जून, 2016: माइक्रोसॉफ्ट ने घोषणा की कि डॉकर को अब विंडोज 10 पर मूल रूप से इस्तेमाल किया जा सकता है। * जनवरी 2017: Linkedin प्रोफाइल के विश्लेषण में उल्लेख किया गया है कि 2016 में डॉकर की उपस्थिति में 160% की वृद्धि हुई है। * 6 मई, 2019: माइक्रोसॉफ्ट ने लिनक्स (डब्ल्यूएसएल) के लिए विंडोज सबसिस्टम के दूसरे संस्करण की घोषणा की। Docker, Inc. ने घोषणा की कि उसने WSL 2 पर चलने वाले Windows के लिए Docker के एक संस्करण पर काम करना शुरू कर दिया है। विशेष रूप से, इसका मतलब है कि डॉकर विंडोज 10 होम पर चल सकता है (पहले यह हाइपर-वी का उपयोग करने के बाद से विंडोज प्रो और एंटरप्राइज तक सीमित था)।
 * अगस्त 2020: माइक्रोसॉफ्ट ने विंडोज 10 वर्जन 1903 और 1909 में WSL2 के बैकपोर्ट की घोषणा की (पहले WSL2 केवल वर्जन 2004 पर उपलब्ध था) और डॉकर डेवलपर्स ने इन प्लेटफॉर्म्स के लिए डॉकर की उपलब्धता की घोषणा की। *अगस्त 2021: विंडोज और मैकओएस के लिए डॉकर डेस्कटॉप अब एंटरप्राइज यूजर्स के लिए फ्री नहीं है। डॉकर ने बड़े व्यावसायिक ग्राहकों के लिए मुफ्त डॉकर डेस्कटॉप का उपयोग समाप्त कर दिया और इसकी मुफ्त योजना को एक व्यक्तिगत योजना के साथ बदल दिया। लिनक्स वितरण पर डॉकर अप्रभावित रहता है।

यह भी देखें

 * DevOps
 * DevOps टूलचैन
 * gvisor
 * कुबेरनेट्स
 * लिनक्स कंटेनरों की सूची
 * माइक्रोसर्विसेज
 * ओएस-स्तर वर्चुअलाइजेशन
 * सेवा घटक वास्तुकला
 * विलक्षणता (सॉफ्टवेयर) - एचपीसी समूहों के लिए डॉकर विकल्प
 * ओपन कंटेनर पहल

बाहरी संबंध

 * Container Terminology - Practical terminology
 * Container Terminology - Practical terminology