ओएस एक्स के लिए ओएस-स्तरीय वर्चुअलाइजेशन (कंटेनर)


31

मुझे आश्चर्य है कि, अच्छे पुराने चुरोट के अलावा, ऑपरेटिंग सिस्टम-स्तरीय वर्चुअलाइजेशन (या यदि आप चाहें तो कंटेनर) का कोई कार्यान्वयन, ओएस एक्स के लिए मौजूद नहीं है।

क्या यह कर्नेल सीमाओं या लाइसेंस प्रतिबंधों के कारण हो सकता है? या बस किसी ने अभी तक एक समान परियोजना शुरू नहीं की है?

जवाबों:


16

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

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

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

हाल के macOS के पास Hypervisor.framework के माध्यम से देशी हाइपरवाइज़र समर्थन है, जो "XHyve" [FreeBSD's BHyve का एक पोर्ट] (macOS का उपयोग करता है) जैसे सॉफ़्टवेयर की अनुमति देता है, लेकिन ऑपरेटिंग सिस्टम को पूरी तरह से वर्चुअलाइज करने के लिए हुड के तहत आवश्यक सेवाओं का अभाव है।

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

Apple ने ऐसा क्यों नहीं किया है इसका सबसे अच्छा कारण संभवतः यही कारण है कि Apple ने कई वर्षों से डेटा सेंटर में macOS चलाने के लिए उपयुक्त मंच जारी नहीं किया है - बाजार की मांग में कमी, या Apple नेतृत्व द्वारा बाजार की मांग की कमी। डेस्कटॉप और मोबाइल फोकस जहां उन्होंने अपना ध्यान केंद्रित किया है, बस वर्चुअल macOS उदाहरणों की आवश्यकता नहीं है। (यह दुखद है, क्योंकि मुझे वर्चुअल macOS सपोर्ट पसंद आएगा - उदाहरण के लिए ट्रैविस CI पर वीएमएस पर macOS चलाने के लिए लिनक्स कंटेनरों की तुलना में वास्तव में समय लगता है)।


1
अच्छा जवाब ... मेरा अनुमान है कि Apple सर्वर पर OSX का समर्थन करने से बचता है क्योंकि यह उनके MBP बाजार को ध्वस्त कर देगा अगर iOS डेवलपर्स एक सस्ता शक्तिशाली लिनक्स लैपटॉप चला सकते हैं और VPS होस्टिंग प्रदाता पर उनके
एपीके को

6

आपको आश्चर्य होगा - कंटेनर वास्तव में समर्थित हैं - ओएस एक्स (और आईओएस) सैंडबॉक्स उनका उपयोग करने के लिए विकसित हुआ है। उन्हें 10.7 में पेश किया गया है, और अब 10.10 और iOS 8 में वास्तव में मानक हैं। बाद में उन्हें अधिक सख्ती से लागू किया जाता है (मुख्य रूप से आवेदन सुरक्षा के कारण), उस बिंदु पर जहां कोई ऐप केवल खुद को देख सकता है, और पिछले प्रक्रियाओं की गणना करने के तरीके या संसाधन अब कंटेनर आधारित परिणाम लौटाते हैं - लिनक्स आईपीसी नेमस्पेस के समान - लेकिन अधिक शक्तिशाली।


2
हालांकि ये सैंडबॉक्स हैं, ओएस-वर्चुअलाइजेशन (जैसे कंटेनर, ज़ोन, जेल) नहीं, सही?
smdvlpr

1
डॉकर वर्चुअलाइजेशन नहीं है। कंटेनर! = वी.एम. Docker मूल रूप से विभिन्न कर्नेल सुविधाओं, cgroups, chroot, स्तरित फ़ाइल सिस्टम, iptables रूटिंग और इसी तरह की प्रक्रियाओं के एक समूह को अलग करने के लिए एक कोरल को कोरल करता है, ताकि ऐप अपने आप को सिस्टम को स्वयं के रूप में देखता है, जबकि सुरक्षा को बेहतर बनाने के लिए उन वातावरणों को अलग करता है। और कंटेनरों की क्षमता को एक-दूसरे और सिस्टम के साथ जोड़कर छोटा कर सकते हैं। OSX कंटेनर इस कार्यक्षमता को प्राप्त करते हैं, लेकिन सभी नहीं। यह शायद कुछ है जो एक चालाक पर्याप्त कोडर द्वारा लागू किया जा सकता है, हालांकि।
शायनी

3
@Technologeeks, क्या आप OS X में कंटेनरों / सैंडबॉक्स पर किसी संदर्भ सामग्री की ओर संकेत कर सकते हैं?
केन विलियम्स

3

मैं इस उत्तर की कल्पना करूंगा कि कोई भी वास्तव में यह नहीं चाहता है। यह करने योग्य प्रतीत होता है। ये चीजें मुख्य रूप से एक उद्देश्य के लिए की जाती हैं, वीपीएस विक्रेताओं के लिए प्रदर्शन का संरक्षण। और वास्तव में कोई भी नहीं चाहता है कि VPS उदाहरण OS X- आधारित हो।


5
आपकी बात के लिए धन्यवाद। IMHO कंटेनरों के लिए कम से कम एक और उपयोग मामला है, जो विकास के वातावरण का निर्माण कर रहा है। : Btw, मैं यह भी पाया है इस पुराने लौ groups.google.com/forum/#!topic/darwin-dev/6-FP9GCsBG4
Emyl

बढ़ा हुआ घनत्व अपने स्वयं के नामस्थानों में प्रक्रियाओं को अलग करने का एक अच्छा पक्ष प्रभाव है। कंटेनर आपको कई ऐप्स अधिक सुरक्षित रूप से चलाने देते हैं और मशीन पर वे क्या कर सकते हैं, इस पर अधिक नियंत्रण रखते हैं। आईओएस द्वारा इन लाभों का उपयोग सुरक्षा को बढ़ाने और एक दूसरे पर एप्स को रखने से किया जाता है, उदाहरण के लिए, जिसका वीपीएस घनत्व के साथ बहुत कम संबंध है। यहां तक ​​कि एकल-सेवा मशीनें भी सुरक्षा का लाभ उठा सकती हैं। वहाँ कोई घनत्व में सुधार नहीं है, लेकिन कंटेनर अभी भी उपयोगी हो सकते हैं।
गार्गुनच्यूच

2

जब यह "अच्छे पुराने चिरोट (8)" का उपयोग कर रहा है, तो मैंने एक प्रोजेक्ट शुरू किया जो OS X और NetBSD पर डॉकटर के व्यवहार की नकल करता है। यह फ्री-इन-इन-स्पीच है और GitHub पर उपलब्ध है । जैसा कि आरईएडीएमई कहता है, यह परियोजना न तो सुरक्षा के बारे में है और न ही उत्पादन के बारे में है, लेकिन यह आपके कार्य केंद्र पर मूल रूप से पूर्ण स्टैक का परीक्षण करने में मदद करेगी।


0

docker (जैसा कि मैं इसे समझता हूँ) केवल "वर्चुअलाइज़िंग" (लेयरिंग) फ़ाइल सिस्टम और नेटवर्क (cpu / मेम केवल सीमित हैं) है, इसलिए सभी समान सुविधा होनी चाहिए लेकिन बस उसी तरह से मार्केटिंग नहीं की जानी चाहिए।

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