डॉक होस्ट ओएस और कंटेनर बेस इमेज ओएस के बीच क्या संबंध है?


122

मुझे यकीन नहीं है कि मैं सही सवाल पूछ रहा हूं ... लेकिन जब मैं सब कुछ पढ़ रहा हूं कि मैं अपने हाथों को प्राप्त कर सकता हूं तो मैं देख सकता हूं कि मैं Ubuntu 12.04 (उदाहरण के लिए) पर डॉकर स्थापित कर सकता हूं और फिर मैं स्थापित कर सकता हूं एक फेडोरा कंटेनर या ubuntu का एक अलग संस्करण? (एक उदाहरण है जहां उपयोगकर्ता ने कंटेनर में व्यस्त बॉक्स स्थापित किया है।)

और निश्चित रूप से मैं पूरी तरह से गलत हो सकता है।

लेकिन यह मेरी अपेक्षा होगी कि आधार प्रणाली और कंटेनर के बीच एक अल्पकालिक संबंध था।

पुनर्स्थापित: होस्ट OS और कंटेनर बेस छवि के OS के बीच क्या संबंध है?

जवाबों:


100

जैसा कि BraveNewCurrency द्वारा उल्लेख किया गया है, होस्ट OS और कंटेनर के बीच एकमात्र संबंध कर्नेल है।

यह docker और 'regular' वर्चुअल मशीनों के बीच मुख्य अंतर में से एक है, कोई ओवरहेड नहीं है, सब कुछ सीधे होस्ट के कर्नेल के भीतर होता है।

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

डॉकर उन चित्रों का प्रबंधन करता है जो फ़ाइल सिस्टम प्रतिनिधित्व हैं। आप किसी भी लिनक्स वितरण को स्थापित कर सकते हैं या बस बायनेरिज़ डाल सकते हैं।

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

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


2
इसलिए यदि मेजबान ओएस उबंटू है तो कंटेनर भी उबंटू होने वाला है?
रिचर्ड

21
कंटेनर का कर्ब उबंटू से एक होने वाला है, लेकिन इससे ज्यादा कुछ नहीं। आप कंटेनर के रूप में आसानी से सेंटो, आर्कलिनक्स, डेबियन या किसी अन्य लिनक्स आधारित वितरण को चला सकते हैं।
क्रॉक

37
हालाँकि यह जानकारी प्रत्यक्ष रूप से / अप्रत्यक्ष रूप से docker की वेबसाइट पर बताई जा सकती है, मुझे वास्तव में लगता है कि उन्हें इसे थोड़ा स्पष्ट करना चाहिए। मैंने होमपेज, ओवरव्यू, इंटरेक्टिव ट्यूटोरियल, और अधिकांश बेसिक टट्स के माध्यम से अपना काम किया है। इसके बावजूद मैं इस विषय पर उलझन में था, और यह मानने लगा था कि docker (साइट से आर्किटेक्चर आरेख के आधार पर) के सर्वश्रेष्ठ प्रदर्शन को होस्ट और कंटेनर OS पर एक मैच की आवश्यकता होगी। मैं "लिनक्स कर्नेल" की अवधारणा के लिए नया हूं इसलिए यह मेरे लिए तुरंत स्पष्ट नहीं था। इसे जानने के तुरंत बाद डॉकटर बुरे-गधे के रूप में दोगुना हो जाता है।
ctrlplusb

2
डॉकर एक बहुत ही जटिल परियोजना है जो अग्रिम सुविधाओं का लाभ उठाती है। कुछ बिंदु पर, हम मानते हैं कि उपयोगकर्ता के पास कुछ ज्ञान है जैसे ऑपरेटिंग सिस्टम और वितरण के बीच का अंतर। यदि आपको लगता है कि यह मूल्य जोड़ देगा, तो दस्तावेज़ खुला स्रोत है और आप एक पुल अनुरोध सबमिट कर सकते हैं।
creack

3
यह इंगित करता है कि केवल एक ओएस (पुस्तकालयों, आदेशों, अनुप्रयोगों) के उपयोगकर्ता-अंतरिक्ष भागों को कंटेनरीकृत किया जा सकता है। यदि एप्लिकेशन को एक अलग कर्नेल संशोधन की आवश्यकता होती है (उदाहरण 3.10 बनाम 4.9) तो यह कंटेनर में नहीं चल सकता है। क्या वह सही है?
डेविड सी।

23

वस्तुतः, उनके पास केवल एक चीज है जो कि कर्नेल है। उनकी पूरी दुनिया (फाइल सिस्टम) डॉकटर कंटेनर में है।


1

एक और विचार है - भले ही दोनों गुठली एक ही हो, एक समस्या है अगर होस्ट OS डॉकर का समर्थन नहीं करता है, जैसे RHEL 6: https://access.redhat.com/solutions/1378023

तो आप RHEL 6 पर एक कंटेनर को स्पिन करने में सक्षम नहीं होंगे, भले ही छवि एक लिनक्स एक हो।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.