2015-09-24 6 views
7

डॉकर में, अतिथि ओएस होस्ट कर्नेल के समान कर्नेल साझा करता है।डॉकर में साझा कर्नेल द्वारा क्या मतलब है?

क्या कोई इस पर और विस्तार कर सकता है।

मेरे पास सेंटोस ओएस है जिसमें कुछ कर्नेल संस्करण हैं, जब हम उबंटू छवि खींचते हैं तो उसके पास अलग कर्नेल होता है, फिर हम कैसे कह सकते हैं कि उनके पास एक ही कर्नेल है?

उत्तर

10

जब हम ubuntu छवि खींच तो यह अलग गिरी है

कोई यह नहीं है: यह गिरी हिस्सा नहीं है: यह मेजबान की गिरी (एक चल रहा डोकर इंजन) पर निर्भर करता है सभी system calls के लिए।

"Docker vs Virtualization" में उल्लेख किया है:

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

"Why Understanding User Space vs. Kernel Space Matters" पर और देखें।
इसके अलावा "Operating System Containers vs. Application Containers":

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

https://risingstack-blog.s3-eu-west-1.amazonaws.com/2015/05/os-virtualization.jpg

ओएस कंटेनर आभासी वातावरण है कि होस्ट ऑपरेटिंग सिस्टम के कर्नेल का हिस्सा है, लेकिन जैसा कि "Do all Linux distros use the same kernel?" में उल्लेख किया है उपयोगकर्ता अंतरिक्ष अलगाव

https://risingstack-blog.s3-eu-west-1.amazonaws.com/2015/05/os-containers.jpg

प्रदान कर रहे हैं, एक कर्नेल को distro भर में साझा किया जा सकता है, भले ही प्रत्येक distro कर्नेल की अपनी विन्यास है।

+0

वॉन, क्या आप कृपया विस्तार से बता सकते हैं कि यह मेजबान कर्नेल पर निर्भर करता है, अगर यह अपने कर्नेल – gaurav

+0

@gaurav खींच रहा है, तो यह * अपने * कर्नेल को खींच नहीं रहा है: यह पहले से मौजूद कर्नेल पर निर्भर करता है। – VonC

+0

वोक, लेकिन हम सेंटोस को जानते हैं, उबंटू के पास अलग-अलग कर्नेल हैं, तो यह मेजबान कर्नेल पर निर्भर कैसे हो सकता है, कैसे यूबंटू सेंटोस कर्नेल – gaurav

0

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

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

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

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