ओएस डॉकटर कंटेनर: एक वीएम के साथ फिर क्या अंतर है?


10

एक डॉकटर कंटेनर में ओएस का उपयोग करने की बात क्या है?

Docker रिपॉजिटरी में, आपको एक Ubuntu docker इमेज मिलती है: https://registry.hub.docker.com/_/ubuntu/ मुझे लगा कि Docker "ऐप" स्तर पर अधिक था।

उबंटू डॉकटर कंटेनर और उबंटू वर्चुअल मशीन के बीच अंतर क्या है? यदि आपके पास डॉकटर कंटेनर में पूरा ओएस है, तो क्या डॉकटर का उपयोग करना व्यर्थ है?

धन्यवाद

जवाबों:


11

आपके पास बुनियादी डॉकर अवधारणाओं की कमी है। यह बिलकुल अलग बात है।

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

अब आपको आश्चर्य होना चाहिए कि आपके द्वारा चलाए जा रहे linux वितरण से अलग एक linux बेस छवि के अंदर चलने वाली प्रक्रिया को कैसे प्राप्त करना संभव है। आपको मूल रूप से चलाने के लिए OS के लिए:

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

डॉकर एक कंटेनर के अंदर डिस्क ब्लॉक की परतों का प्रबंधन करने के लिए UnionFS का उपयोग करता है ताकि आप उन्हें ढेर कर सकें।

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

यहां आपके पास एक तरह से बिछाए गए डिस्क ब्लॉक का ढेर है, जिससे बेस इमेज से बेस इमेज आती है जिसमें एक ही फाइल सिस्टम एक बार असली होस्ट में इंस्टॉल हो जाता है, लेकिन यह इस समय कंटेनर के अंदर है।

आखिरी चीज़ की कमी है: आप इस चीज़ को अलग-थलग कैसे चलाते हैं?

इसका उत्तर है: नाम स्थान। मैं यहाँ विवरण में नहीं जाऊँगा क्योंकि यह मूल प्रश्न से थोड़ा हटकर होगा। लेकिन आपको यह जानने की जरूरत है कि कर्नेल 2.4.19 के बाद से, विभिन्न प्रकार के नाम साल के साथ दिखाई देते हैं। वर्तमान में निम्नलिखित नामस्थान उपलब्ध हैं:

  • IPC: IPC नामस्थान (इंटरप्रोसेस संचार)
  • MNT: माउंट नेमस्पेस
  • NET: नेटवर्क नेमस्पेस
  • पीआईडी: पीआईडी ​​नेमस्पेस
  • उपयोगकर्ता: उपयोगकर्ता नामस्थान (यूआईडी)
  • यूटीएस: यूटीएस नामस्थान (होस्टनाम)

नामस्थान कर्नेल के अंदर पृथक संरचनाएं हैं जो प्रक्रियाओं को एक विशेष वातावरण के साथ चलने की अनुमति देती हैं। उदाहरण के लिए, MNT नेमस्पेस आधार छवि रूट फाइल सिस्टम विशिष्टताओं में चलने वाली प्रक्रिया को प्राप्त करने के लिए प्रमुख विशेषता होगी। नेट नेमस्पेस कंटेनर के लिए एक अन्य मुख्य विशेषता होगी जिसमें डॉकटर पुल आदि के साथ संचार करने के लिए विशिष्ट नेटवर्क इंटरफेस होना चाहिए।

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

आगे खुदाई करने से पहले डॉकटर के दस्तावेज को पढ़ना एक अच्छा विचार होगा।


धन्यवाद, क्या इसका मतलब यह है कि एक "उबंटू" छवि इस तरह की है: रजिस्ट्री.hub.docker.com/_/ubuntu खुद से "कोई मतलब नहीं" बनाता है और एक "nginx कंटेनर" जैसे अधिक परिभाषित कंटेनर के लिए आधार के रूप में सेवा करता है? मुझे नहीं पता कि क्या मुझे समझ में आता है?
माइकल

हाँ आप कीजिए। यह वही है जो इसके लिए उपयोग किया जाता है। और आमतौर पर आपने सुना होगा कि लोग इस कारण से उन्हें आधार चित्र कहते हैं ।
जेवियर लुकास

मैं प्रलेखन के माध्यम से चला गया हूं और एक चीज है जो मुझे यकीन नहीं है। मान लीजिए कि ubuntu छवि का आकार 140Mb है। फिर, इस छवि के आधार पर एक और छवि 10 और एमबी जोड़ता है। यदि मैं इस छवि से 2 कंटेनर चलाता हूं, तो क्या प्रत्येक कंटेनर 150Mb होगा और मुझे 300Mb डिस्क स्थान की आवश्यकता होगी या कुल आकार 150Mb रहेगा? साभार
माइकल

वाह, मैंने अभी आधिकारिक अजगर छवि डाउनलोड की है और आभासी आकार 802.4 एमबी है। डाउनलोड होने में थोड़ा समय लगा। अगर मैं इसमें से 10 कंटेनर चलाऊंगा, तो कंटेनर को कितनी जगह मिलेगी? साभार
माइकल

2
@YAmikep निर्भरताएँ ठीक से साफ़ न होने के कारण कुछ चित्र बड़े हो सकते हैं। यदि आप एक ही छवि के साथ 10 कंटेनर शुरू करते हैं, तो इसका मतलब यह नहीं है कि उपयोग की गई डिस्क स्थान छवि के आकार का 10 गुना होगा। आप एक छवि को एक बार लोड करते हैं लेकिन इसे कई कंटेनरों से चलाते हैं। डॉकर एक ही छवि से कई कंटेनरों को चलाने पर कॉपी-ऑन-राइट का उपयोग करता है, जिसका मूल रूप से मतलब यह है कि यह कंटेनरों के बीच की छवि को साझा करेगा और किसी छवि के अंदर फ़ाइल की एक निजी प्रतिलिपि केवल तभी बनाएगा जब कंटेनर इसे जोड़ / संशोधित करेगा। तो इस्तेमाल किया गया वास्तविक आकार कंटेनरों के अंदर की गतिविधि से जुड़ा हुआ है, न कि कितने रन।
जेवियर लुकास
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.