cgroups और namepaces के बीच अंतर


85

मैंने हाल ही में डॉकटर सीखना शुरू किया है और ऐसा लगता है कि ज्यादातर भारी उठाने का काम लिनक्स कर्नेल द्वारा किया जाता है, नामस्थान और cgroups का उपयोग करके।

कुछ चीजें जो मुझे भ्रामक लग रही हैं:

  1. एक नाम स्थान और एक समूह के बीच क्या अंतर है? उनके द्वारा उपयोग किए जाने वाले विभिन्न मामले क्या हैं?

  2. लोकप्रियता हासिल करने के लिए इसने शीर्ष पर क्या लागू किया है?

  3. मैं इन विशेषताओं के इंटर्नल को जानना चाहता हूं और उन्हें कैसे लागू किया जाता है।


जवाबों:


108

पीआर 14307 में उन दो धारणाओं के लिए उचित लिंक तय किए गए हैं :

हुड के तहत, डॉकर निम्नलिखित घटकों पर बनाया गया है:

लिनक्स कर्नेल की cgroups और namespacesक्षमताओं

साथ में:

  • cgroup : नियंत्रण समूह विशेष व्यवहार के साथ पदानुक्रमित समूहों में कार्यों के समुच्चय / विभाजन समूह और उनके सभी भविष्य के बच्चों के लिए एक तंत्र प्रदान करते हैं।
  • namepace : एक वैश्विक सिस्टम संसाधन को एक अमूर्त में लपेटता है, जिससे यह नामस्थान की प्रक्रियाओं में प्रकट होता है कि उनके पास वैश्विक संसाधन का अपना पृथक उदाहरण है।

संक्षेप में:

  • Cgroups = सीमाएँ जो आप उपयोग कर सकते हैं;
  • नामस्थान = सीमाएं जो आप देख सकते हैं (और इसलिए उपयोग करें)

Jérôme Petazzoni द्वारा " एनाटॉमी ऑफ़ ए कंटेनर: नेमस्पेस, सीग्रुप्स एंड सम फाइलसिस्टम मैजिक " में और देखें

Cgroups संसाधन पैमाइश और सीमित करना शामिल है:

  • याद
  • सी पी यू
  • ब्लॉक I / O
  • नेटवर्क

नामस्थान सिस्टम के अपने दृष्टिकोण के साथ प्रक्रिया प्रदान करते हैं

कई नामस्थान:


धन्यवाद। है chrootकुछ नाम स्थान के आधार पर? chrootकुछ नामस्थान द्वारा प्रतिस्थापित किया जा सकता है?
टिम

1
नहीं, चुरोट किसी नाम स्थान पर आधारित नहीं है: itnext.io/… देखें । तीन साल से अधिक समय के बाद भी, नए डॉकर (19.03, अभी भी बीटा में) को ध्यान में रखते हुए चला जा सकता है: github.com/moby/moby/blob/… । और मेजबान नामस्थान पर संसाधनों को उजागर कर सकते हैं: github.com/moby/moby/pull/38913
VonC

chrootकुछ नामस्थान द्वारा प्रतिस्थापित किया जा सकता है?
टिम

1
@ मूल रूप से नहीं। शायद के साथ pivot_root? ( Unix.stackexchange.com/a/456777/7490 ) भी देखें github.com/vincentbernat/jchroot
VonC

1
twitter.com/b0rk/status/1225445956734390273 कंटेनर चित्रण के लिए
VonC

6

cgroups उन संसाधनों को सीमित करता है जो एक प्रक्रिया या प्रक्रियाओं का सेट इन संसाधनों का उपयोग कर सकते हैं CPU, मेमोरी, नेटवर्क I / O या फाइल सिस्टम तक पहुंच हो सकती है जबकि नामस्थान प्रक्रियाओं के समूह की दृश्यता को सिस्टम के बाकी हिस्सों तक सीमित कर देता है।

अधिक जानकारी के लिए देखें कि लिनक्स कर्नेल Cgroups और Namespaces ने आधुनिक कंटेनरों को कैसे संभव बनाया


2

Cgroups (नियंत्रण समूह) संसाधन प्रबंधन करता है।
यह निर्धारित करता है कि कंटेनरों को कितने मेजबान मशीन संसाधन दिए जाने हैं।

उदाहरण के लिए: - हम सेवाओं को बनाने के लिए docker-compose yaml फ़ाइल में संसाधनों को परिभाषित करते हैं:

संसाधन:
  सीमा:
    cpus: "0.1" (100 मिलीग्राम)
    मेमोरी: 50M

यहाँ, इस उदाहरण में हम स्पष्ट रूप से cgroups को इन संसाधनों को विशेष रूप से कंटेनर में आवंटित करने के लिए कह रहे हैं।


नेमस्पेस : प्रक्रिया अलगाव, कंटेनरों का पूर्ण अलगाव, अलग फ़ाइल सिस्टम प्रदान करता है।


6 प्रकार के नामस्थान हैं:
1. फ़ाइल सिस्टम के लिए ns - माउंट।
2. यूटीएस (यूनिक टाइम शेयरिंग) एनएस- जो चल रहे कंटेनरों के विभिन्न होस्टनामों के लिए जांच करता है
। 3. आईपीसी एनएस - इंटरप्रोसेस संचार
4. नेटवर्क एनएस- अलग-अलग कंटेनरों को अलग-अलग आईपी आवंटन का ख्याल रखता है।
5 पीआईडी ​​एनएस - प्रक्रिया आईडी अलगाव
6. उपयोगकर्ता ns- विभिन्न उपयोगकर्ता नाम (uid)

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