2014-07-11 12 views
42

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

डॉकर इससे कैसे निपट रहा है?

क्या सभी डॉकर कंटेनर डॉकर छवि में परिभाषित स्थिर भाग साझा करते हैं?

यदि एप्लिकेशन को उस मशीन पर कुछ निर्देशिका में कॉपी करने का अर्थ नहीं है जो डॉकर कंटेनर चलाने के लिए उपयोग किया जाता है और प्रत्येक डॉकर कंटेनर के लिए इस ऐप निर्देशिका को माउंट करने के लिए उपयोग किया जाता है?

उत्तर

74

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

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

यही कारण है कि कंटेनर बॉक्स से बाहर हठ की अनुमति नहीं है, और कैसे डोकर नियमित वी एम के से अलग है कि वर्चुअल हार्ड डिस्क का उपयोग करें। हालांकि, यह कंटेनर के अंदर दृढ़ता के लिए केवल सच है। हार्ड डिस्क पर डॉकर सॉफ़्टवेयर द्वारा बदली जा रही फ़ाइलों को डॉकर वॉल्यूम का उपयोग करके कंटेनरों में "घुड़सवार" किया जाता है और इस प्रकार वास्तव में डॉकर वातावरण का हिस्सा नहीं होता है, लेकिन बस उन्हें घुमाया जाता है। (इसके बारे में और पढ़ें: https://docs.docker.com/userguide/dockervolumes/)

एक और सवाल यह है कि जब आप इस बारे में सोचते हैं तो आप पूछना चाहेंगे, डॉकर स्टोर कैसे बदलता है यह रनटाइम पर अपनी डिस्क को बनाता है। जांच करने के लिए वास्तव में मीठा क्या है, यह वास्तव में डॉकर वास्तव में इस काम को पाने के लिए कैसे प्रबंधित करता है। कंटेनर की हार्ड डिस्क की मूल स्थिति छवि से इसे दी जाती है। यह नहीं इस छवि को लिख सकता है। छवि को लिखने के बजाय, डॉकर छवि में क्या है इसकी तुलना में कंटेनर आंतरिक स्थिति में क्या बदलता है इसका एक अंतर बनाया जाता है। डॉकर "Union Filesystem" नामक एक तकनीक का उपयोग करता है, जो डॉकर छवि की प्रारंभिक स्थिति के शीर्ष पर एक diff परत बनाता है।

यह "diff" (नीचे दी गई छवि में लिखने योग्य कंटेनर के रूप में संदर्भित) स्मृति में संग्रहीत है और जब आप अपना कंटेनर हटाते हैं तो गायब हो जाता है। (जब तक आप आदेश का उपयोग करें "डोकर प्रतिबद्ध", हालांकि: मैं इस अनुशंसा नहीं करते हैं अपने नए डोकर छवि के राज्य एक dockerfile में प्रतिनिधित्व नहीं है और आसानी से एक के पुनर्निर्माण से पुनर्जीवित नहीं किया जा सकता।)

Union Filesystem

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