2014-12-08 31 views
11

इस तथ्य को ध्यान में रखते हुए कि डॉकर छवियों/कंटेनर विभिन्न स्वादों में आते हैं - उबंटू, सेंटोस, कोरोस इत्यादि .... मैं उत्सुक हूं कि वास्तव में एक छवि/कंटेनर क्या बनाता है, और मेजबान ओएस के साथ क्या साझा किया जाता है? विभाजन रेखा कहां है?डॉकर छवि/कंटेनर के अंदर क्या है?

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

स्पष्ट रूप से मैं समझता हूं कि अंतर्निहित कर्नेल उसी मेजबान पर सभी कंटेनरों द्वारा साझा किया जाता है। लेकिन मेजबान ओएस के साथ और क्या साझा किया जाता है, और छवि/कंटेनर का हिस्सा क्या है?

उदा। कर्नेल मेजबान का हिस्सा है, फाइल सिस्टम लेआउट छवि/कंटेनर का हिस्सा है .... क्या कोई ऐसा नमूना है जो इसे परिभाषित करता है?

उत्तर

0

डॉकर LXC लिनक्स कंटेनर पर एक रैपर है और इसके लिए प्रलेखन आपको विस्तार से बताएगा कि क्या साझा किया गया है और क्या नहीं है।

सामान्य रूप से मेजबान मशीन फ़ाइल सिस्टम से प्रक्रियाओं आदि में कंटेनर के अंदर सबकुछ देखती/रखती है। आप होस्ट वीएम पर एक ps कमांड जारी कर सकते हैं और कंटेनर के अंदर प्रक्रियाएं देख सकते हैं।

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

+0

तो कंटेनर विशिष्ट सामान कर्नेल नेमस्पेस के माध्यम से लागू किया गया सामान है? तो प्रत्येक कंटेनर की अपनी खुद की पिड नेमस्पेस की तरह, इसका अपना एमएनटी नेमस्पेस, इसका अपना नेट नेमस्पेस .....? मेजबान के साथ बाकी सब कुछ साझा किया जाता है? –

+0

बिल्कुल, कंटेनर को ट्विक करने के कुछ तरीके हैं जहां आप होस्ट स्टैक का उपयोग सीधे कर सकते हैं लेकिन इसके सभी नामस्थानों के अलावा। –

+5

डॉकर मार्च से डिफ़ॉल्ट रूप से एलएक्ससी पर भरोसा नहीं करता है। – icecrime

14

यह छवियों और कंटेनरों के बीच अंतर करना सहायक हो सकता है (docs)। एक छवि स्थिर है और केवल डिस्क पर रहता है। कंटेनरछवि का एक चल रहा उदाहरण है और इसमें अपनी प्रक्रिया पेड़ के साथ-साथ रैम और अन्य रनटाइम संसाधन भी शामिल हैं।

एक छवि परतों को एकत्रित करने और परतों को इकट्ठा करने के तरीके के बारे में परतों के मेटाडेटा का तार्किक समूह है। उस मेटाडेटा का हिस्सा यह है कि प्रत्येक परत अपने माता-पिता की आईडी जानता है।

तो, एक परत में क्या जाता है? आपके द्वारा अभिभावक में जोड़े गए फ़ाइलें (और निर्देशिका)। विशेष फाइलें भी हैं ("व्हाइटआउट") जो इंगित करती हैं कि माता-पिता से कुछ हटा दिया गया था।

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

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

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

+0

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

संबंधित मुद्दे