डॉकर कम्पोज़ और कुबेरनेट्स के बीच अंतर क्या है?


328

डॉकर, Google क्लाउड और कुबेरनेट्स में गोता लगाते हुए, और उन तीनों को स्पष्ट रूप से समझे बिना, यह मुझे लगता है कि ये उत्पाद अतिव्यापी हैं, फिर भी वे संगत नहीं हैं।

उदाहरण के लिए, एक docker-compose.ymlफाइल को फिर से लिखने की जरूरत है ताकि कुबेरनेट्स में एक ऐप को तैनात किया जा सके।

क्या कोई उच्च-स्तरीय, मोटा विवरण प्रदान कर सकता है कि डोकर, डॉकटर कम्पोज, डॉकर क्लाउड और कुबेरनेट्स ओवरलैप कहां हैं और एक दूसरे पर निर्भर है?

जवाबों:


479

डॉकटर :

  • डॉकर कंटेनर तकनीक है जो आपको अपने अनुप्रयोगों को कंटेनरीकृत करने की अनुमति देती है।
  • डॉकर अन्य प्रौद्योगिकियों के उपयोग का मूल है।

डॉकर कम्पोज़

  • Docker Compose कई Docker कंटेनरों को कॉन्फ़िगर करने और शुरू करने की अनुमति देता है।
  • Docker Compose का उपयोग ज्यादातर सहायक के रूप में किया जाता है, जब आप कई Docker कंटेनरों को शुरू करना चाहते हैं और एक दूसरे को अलग से उपयोग करना शुरू नहीं करना चाहते हैं docker run ...
  • उसी पर कंटेनर शुरू करने के लिए डॉकर कम्पोज का उपयोग किया जाता है मेजबान ।
  • डॉकटर कंपोज का उपयोग सभी वैकल्पिक मापदंडों के बजाय किया जाता है जब एकल डॉकटर कंटेनर का निर्माण और उसे चलाते हैं।

डॉकटर झुंड

  • डॉकर झुंड कई पर कंटेनरों को चलाने और जोड़ने के लिए है मेजबानों है।
  • डॉकर झुंड एक कंटेनर क्लस्टर प्रबंधन और ऑर्केस्ट्रेशन उपकरण है।
  • यह कई मेजबानों पर चलने वाले कंटेनरों का प्रबंधन करता है और स्केलिंग जैसी चीजों को करता है, जब एक क्रैश होता है, तो एक नया कंटेनर शुरू होता है ...
  • Docker झुंड उत्पादन में Docker है। यह देशी डॉक ऑर्केस्ट्रेशन टूल है जो डॉक इंजन में एम्बेडेड है।
  • Docker झुंड फ़ाइल जिसका नाम स्टैक फ़ाइल है, एक Docker Compose फ़ाइल के समान है।

Kubernetes

  • कुबेरनेट्स Google द्वारा विकसित एक कंटेनर ऑर्केस्ट्रेशन टूल है।
  • डबर्न झुंड के लिए कुबेरनेट्स का लक्ष्य बहुत समान है।

डॉकटर बादल

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

अपडेट करें:

डॉकर क्लाउड "आंशिक रूप से" बंद हो गया

Docker Cloud की सेवाएं जो एप्लिकेशन, नोड और झुंड क्लस्टर प्रबंधन प्रदान करती हैं, 21 मई [2020] को बंद हो जाएंगी ... स्वचालित बिल्ड और रजिस्ट्री स्टोरेज सेवाएं, प्रभावित नहीं होंगी और उपलब्ध रहेंगी


अंतिम बात "डॉकर क्लाउड के बारे में सब अच्छा है, आपको कंटेनर चलाने की अनुमति देता है .." व्यावहारिक रूप से, आप इन कंटेनरों को क्लाउड पर चलाने के साथ क्या कर सकते हैं? क्या वे सार्वजनिक रूप से एक्सेस किए गए एंडपॉइंट प्रदान कर सकते हैं? अनिवार्य रूप से एक docker AWS जैसा कुछ है, लेकिन docker कंटेनर के लिए क्लाउड है? (या यह सिर्फ खोज के लिए एक कंटेनर पुस्तकालय है)
जॉर्ज कात्स्नोस

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

6
क्या यह निम्नलिखित सादृश्य बनाने के लिए उचित है। docker-compose <> minikube 2. docker-swarm <> kubernetes क्लस्टर 3. docker-cloud <> GCP, AWS, आदि द्वारा प्रबंधित kubernetes क्लस्टर
Anoop

1
"डॉकटर झुंड कई मेजबानों पर कंटेनर चलाने और कनेक्ट करने के लिए है।" : यहाँ "जोड़ने" का क्या अर्थ है? नेटवर्क कनेक्शन?
कोई_ स्माइली

1
@someone_smiley हाँ। यह एक ओवरले नेटवर्क
OneCricketeer

135

@ यामेनेक के अलावा उत्तर के , मैं यहां कुछ विवरण जोड़ना चाहूंगा, जो कुबेरनेज़ को समझने की उनकी यात्रा में लोगों की मदद कर सकते हैं।

संक्षिप्त जवाब:

  • docker-compose: एक है उपकरण है कि एक YAML फ़ाइल जो आपके वर्णन करता है लेता है बहु कंटेनर आवेदन और आप में मदद करता है बनाने , शुरू / बंद , हटाने कई लिखे बिना उन सभी कंटेनर docker ...प्रत्येक कंटेनर के लिए आदेशों।
  • Kubernetes: कंटेनरीकृत वर्कलोड और सेवाओं के प्रबंधन के लिए एक मंच है , जो घोषणात्मक कॉन्फ़िगरेशन और स्वचालन दोनों को सुविधाजनक बनाता है। क्या?? पढ़ते रहिए ...

डॉकर कम्पोज़

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

कम्पोज़ के पास आपके एप्लिकेशन के पूरे जीवनचक्र के प्रबंधन के लिए आदेश हैं:

  • सेवाओं को शुरू करना, बंद करना और पुनर्निर्माण करना
  • रनिंग सेवाओं की स्थिति देखें
  • रनिंग सेवाओं के लॉग आउटपुट को स्ट्रीम करें
  • किसी सेवा पर एक-बंद आदेश चलाएँ

Kubernetes

( कुबेरनेट्स के परिचय से ): कुबेरनेट्स एक कंटेनर ऑर्केस्ट्रेटर है जैसे डोकर झुंड, मेसोस मैराथन, अमेज़ॅन ईसीएस, हाशिकॉर्प नोमड । कंटेनर ऑर्केस्ट्रेटर उपकरण हैं जो समूह एक क्लस्टर बनाने के लिए एक साथ होस्ट करते हैं, और हमें यह सुनिश्चित करने में मदद करते हैं:

  • दोष-सहिष्णु हैं,
  • स्केल कर सकते हैं, और यह ऑन-डिमांड कर सकते हैं
  • संसाधनों का बेहतर उपयोग करें
  • स्वचालित रूप से अन्य अनुप्रयोगों की खोज कर सकते हैं, और एक दूसरे के साथ संवाद कर सकते हैं
  • बाहरी दुनिया से सुलभ हैं
  • बिना किसी डाउनटाइम के अपडेट / रोलबैक कर सकते हैं।

कई लोग तर्क देते हैं कि कुबेरनेट्स सीखना मुश्किल है। ऐसा इसलिए है क्योंकि यह समस्याओं की एक श्रृंखला को हल करता है और लोग सभी पूर्वापेक्षाओं को जानने के बिना समझने की कोशिश करते हैं। यह इसे जटिल बनाता है। निम्नलिखित जैसे अवधारणाओं / शब्दों के बारे में पढ़कर पहेली के टुकड़ों को एक साथ रखना शुरू करें। यह प्रक्रिया आपको यह समझने में मदद करेगी कि कुबेरनेट्स किस तरह की समस्याओं को हल करने की कोशिश करते हैं:

  • 12-कारक ऐप्स,
  • स्वचालित बिनपैकिंग,
  • स्व-उपचार तंत्र,
  • क्षैतिज स्केलिंग,
  • सेवा की खोज और लोड संतुलन,
  • स्वचालित रोलआउट और रोलबैक,
  • ब्लू-ग्रीन तैनाती / कैनरी तैनाती
  • गोपनीयता और विन्यास प्रबंधन,
  • भंडारण ऑर्केस्ट्रेशन

और क्योंकि कंटेनरों और उनके प्रबंधन के आसपास बहुत सारी चीजें हैं, इसलिए क्लाउड नेटिव परिदृश्य पर नज़र रखें:

इंटरएक्टिव संस्करण यहाँ: परिदृश्य . cncf.io/

यहां छवि विवरण दर्ज करें

अपडेट

मई 2020: अब एक खुले मानक में डॉकर कम्पोजिशन विशिष्टता

खुले स्रोत समुदाय में AWS, Microsoft और अन्य लोगों के साथ काम करते हुए, हमने मौजूदा Compose प्लेटफार्मों के अलावा Kubernetes, और Amazon ECS जैसे क्लाउड-देशी प्लेटफ़ॉर्म का समर्थन करने के लिए Compose Specification बढ़ाया है। यहाँ और अधिक: ब्लॉग / रचना-spec.io


यह उत्तर पुराना है। docker.com/blog/…
OneCricketeer

1
धन्यवाद @ क्रिकेट_007 मैं इस पर नज़र रखूंगा, लेकिन मुझे लगता है कि 2018 की यह ब्लॉग पोस्ट ... "मार्केटिंग" की तरह है। 2020 है और अगर आप कम से डॉक्स जाँच डोकर लिखें और लिखें फ़ाइल संस्करण 3 संदर्भ वहाँ Kubernetes के बारे में कुछ नहीं है।
tgogos


1
ओह, कमाल है कि वहाँ एक रचना परत है जो सभी kubernetes सिंटैक्स को अमूर्त करता है! धन्यवाद @ क्रिकेट_007
जॉर्ज कैटसनोस

28

यदि आप एक ही मेजबान के साथ कंटेनरों की नेटवर्किंग कर रहे हैं, तो डॉक कंपोज़ के लिए जाएं

यदि आप कई मेजबानों पर कंटेनरों की नेटवर्किंग कर रहे हैं तो कुबेरनेट्स के लिए जाएं


2
उस प्रकार के उत्तर की मुझे उम्मीद थी! हालांकि यह कुछ और स्पष्टीकरण हो सकता है, "tl; डॉ।" भाग वास्तव में बिंदु है। अन्य कोई भी उत्तर वास्तव में ऐसा नहीं कहता है!
द गॉडफादर

8

पहला अंतर कंटेनर इंजन और कंटेनर ऑर्केस्ट्रेटर के बीच है।

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

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

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

Docker क्लाउड भी एक PaaS ऑफ़र है जो आपको चलाने और ऑर्केस्ट्रेट कंटेनर के माध्यम से चलाने देगा docker इंजन API के ।

अब आपकी आवश्यकताओं के आधार पर, बुनियादी ढांचे और लक्षित दर्शकों पर नियंत्रण का स्तर आप नंगेमेटल पर कुबेरनेट का उपयोग कर सकते हैं, या एज़्योर एसीएस या Google जीकेई, आदि ...

उम्मीद है कि यह मदद मिली :) सादर


1
मैं थोड़ा उलझन में हूं कि आप आमतौर पर केवल एक कंटेनर को डॉकटर पर क्यों चलाते हैं? जबकि मुझे लगता है कि डॉकटर-कम्पोज़ एक बेहतर उपाय है, लेकिन इसके बिना आपको कई कंटेनरों को शुरू करने से कोई रोक नहीं सकता है!
पीटर

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

6

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

मैं Pluralsight, Linux अकादमी, आदि में उपलब्ध कुछ कुबेरनेट ट्यूटोरियल में डाइविंग की सलाह दूंगा और अपनी पसंद के क्लाउड प्लेटफ़ॉर्म (EKS, AKS, GKE, इत्यादि) के साथ खेलने के लिए एक क्लस्टर को स्पिन करूंगा। यदि आप नंगे धातु पर घूमने की कोशिश कर रहे हैं, तो OpenShift पर एक नज़र डालें, लेकिन पहचानें कि आप इस सेटअप में कुबेरनेट्स के कुछ जादू खो देते हैं।


सहमत हैं कि k8s "जीता" (अभी के लिए) है। लेकिन मेसोस को उत्पादन समूहों के लिए सोने के मानक के रूप में संदर्भित किया जाता था । DC / OS ने एंटरप्राइज़ फीचर्स को आगे बढ़ाने का एक अच्छा काम किया, लेकिन अब आप एक मेसोस पर्यावरण के भीतर कई k8s क्लस्टर भी चला सकते हैं और उन्हें एक एकल विक्रेता-अज्ञेय मंच से एक्सेस कर सकते हैं, जो वास्तव में बेहतर है?
OneCricketeer

3

डॉकटर रचना:

एक docker-compose.ymlफ़ाइल में प्रत्येक प्रविष्टि वैकल्पिक रूप docker-composeसे एक छवि बनाने के लिए मिल सकती है । प्रत्येक प्रविष्टि एक एकल कंटेनर का प्रतिनिधित्व कर सकती है जिसे हम बनाना चाहते हैं और प्रत्येक प्रविष्टि नेटवर्किंग आवश्यकताओं या बंदरगाहों को परिभाषित करती है।

Kubernetes:

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

इसलिए हम सुनिश्चित करते हैं कि हमारी छवि डॉकटर हब पर होस्ट की गई है, कंटेनर बनाने के लिए एक कॉन्फ़िग फ़ाइल और नेटवर्किंग सेट करने के लिए एक कॉन्फिग फ़ाइल।


1

डॉकर-कम्पोज़ एक तैनाती फ़ाइल है जो अपने वातावरण के साथ एक या अधिक कंटेनर को पूर्वनिर्धारित करती है जैसे वॉल्यूम, नेटवर्किंग, चलाने के लिए एक कमांड और इसी तरह।

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


1

डॉकटर रचना: डॉकटर कंटेनरों को सीधे किसी भी यमल फ़ाइल की सहायता से चलाया जा सकता है। लेकिन डॉकर कंपोज़ टूल कंटेनर की सहायता से एक फाइल के अंदर परिभाषित किया जा सकता है जिसे डॉक-कंपोज.माइल फाइल कहा जाता है। अधिक जानकारी के लिए कृपया नीचे का नमूना yml फ़ाइल खोजें।

version: "3.7"
services:
  redis:
    image: redis:latest
    deploy:
      replicas: 1
    configs:
      - my_config
      - my_other_config
configs:
  my_config:
    file: ./my_config.txt
  my_other_config:
    external: true

छवि का नाम, प्रतिकृतियों की संख्या, आदि .. yml फ़ाइल के माध्यम से कॉन्फ़िगर किया जा सकता है।

कुबेरनेट्स: यह कंटेनर प्रबंधन प्लेटफॉर्म है जिसे गूगल द्वारा निर्मित डॉकर के शीर्ष पर चलाया जाता है। Docker swam एक और कंटेनर प्रबंधन प्लेटफ़ॉर्म है जिसे docker द्वारा निर्मित किया गया है। कुबेरनेट्स यम फाइल में पॉड्स (डॉकटर में कंटेनर से संबंधित) से संबंधित कॉन्फ़िगरेशन को बचाने के लिए सुविधा प्रदान करते हैं जैसे डॉक रचना। उदाहरण yaml फ़ाइल

apiVersion: v1
kind: Pod
metadata:
  name: rss-site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80
    - name: rss-reader
      image: nickchase/rss-php-nginx:v1
      ports:
        - containerPort: 88

यहाँ भी चित्र, पोर्ट को खोला जा सकता है और पोर्ट मैपिंग आदि की मेजबानी के लिए पॉड दिया जा सकता है। docker रचना की तरह, इस फाइल को चलाने के लिए kubectl apply -f कमांड है।


तो, क्या अंतर है? =)
गॉडफादर

docker रचना docker की छवियों को चलाने के लिए एक कंसोल है और kubernetes ऐसा नहीं है कि यह कंटेनर ऑर्केस्ट्रेशन सिस्टम है। इसलिए इन दोनों की तुलना और पूरी तरह से अलग नहीं किया जा सकता है। लेकिन kubernetes में kubectl है यह एक सांत्वना भी है और
docker
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.