
एक ओपन-सोर्स, अगली पीढ़ी का "runc" जो रूटलेस कंटेनरों को Systemd, Docker, Kubernetes जैसे वर्कलोड को बिल्कुल VMs की तरह चलाने में सक्षम बनाता है।
Sysbox एक ओपन-सोर्स और मुफ्त कंटेनर रनटाइम (एक विशेषीकृत "runc") है, जिसे मूल रूप से Nestybox द्वारा विकसित किया गया था (05/2022 में Docker द्वारा अधिग्रहित), जो कंटेनरों को दो प्रमुख तरीकों से बेहतर बनाता है:
कंटेनर आइसोलेशन में सुधार करता है:
सभी कंटेनरों पर लिनक्स यूज़र-नेमस्पेस (यानी, कंटेनर में रूट यूज़र के पास होस्ट पर शून्य विशेषाधिकार होते हैं)।
कंटेनर के अंदर procfs और sysfs के कुछ हिस्सों को वर्चुअलाइज़ करता है।
कंटेनर के अंदर होस्ट की जानकारी छिपाता है।
कंटेनर के प्रारंभिक माउंट्स को लॉक करता है, और बहुत कुछ।
कंटेनरों को VMs के समान वर्कलोड चलाने में सक्षम बनाता है:
Sysbox के साथ, कंटेनर systemd, Docker, Kubernetes, K3s, buildx (मल्टी-आर्क बिल्ड सहित), लिगेसी ऐप्स, मल्टी-आर्क ऐप्स, और बहुत कुछ सिस्टम-स्तरीय सॉफ्टवेयर को सहज और सुरक्षित रूप से चला सकते हैं।
यह सॉफ्टवेयर Sysbox कंटेनरों के अंदर बिना किसी संशोधन के और सॉफ्टवेयर के विशेष संस्करणों (जैसे, रूटलेस वेरिएंट) के बिना चल सकता है।
कोई विशेषाधिकार प्राप्त कंटेनर नहीं, कोई जटिल इमेज नहीं, कोई मुश्किल एंट्रीपॉइंट नहीं, कोई विशेष वॉल्यूम माउंट नहीं, आदि।
इसे एक "कंटेनर सुपरचार्जर" के रूप में सोचें: यह आपके मौजूदा कंटेनर प्रबंधकों / ऑर्केस्ट्रेटरों (जैसे, Docker, Kubernetes, आदि) को ऐसे कंटेनर तैनात करने में सक्षम बनाता है जिनमें कठोर आइसोलेशन होता है और जो लगभग किसी भी वर्कलोड को चला सकते हैं जो VMs में चलते हैं।
Sysbox उन्नत OS वर्चुअलाइज़ेशन तकनीकों का उपयोग करके कंटेनर को यथासंभव VM-जैसे वातावरण जैसा बनाकर ऐसा करता है।
Kata और KubeVirt जैसे वैकल्पिक रनटाइम के विपरीत, यह VMs का उपयोग नहीं करता है। यह इसे उपयोग करना आसान बनाता है (विशेष रूप से क्लाउड वातावरण में नेस्टेड वर्चुअलाइज़ेशन से बचकर), हालाँकि यह आइसोलेशन का वह स्तर प्रदान नहीं करता है जो VM-आधारित रनटाइम प्रदान करते हैं। तुलना के लिए यहाँ देखें।
Sysbox का लाभ उठाने के लिए नए टूल सीखने या अपनी मौजूदा कंटेनर इमेज या वर्कफ़्लो को संशोधित करने की आवश्यकता नहीं है। बस इसे इंस्टॉल करें और बेहतर कंटेनर तैनात करने के लिए अपने कंटेनर प्रबंधक / ऑर्केस्ट्रेटर को इसकी ओर इंगित करें।
Sysbox उसी होस्ट पर अन्य कंटेनर रनटाइम (जैसे, डिफ़ॉल्ट OCI runc, Kata, आदि) के साथ साथ-साथ रह सकता है। आप अपनी आवश्यकताओं के आधार पर आसानी से चुन सकते हैं कि कौन से कंटेनर या पॉड को किसके साथ चलाना है।
Sysbox मुफ्त और ओपन-सोर्स है, जो Apache License, संस्करण 2.0 के तहत लाइसेंस प्राप्त है। विवरण के लिए LICENSE फ़ाइल देखें।
Sysbox मूल रूप से Nestybox द्वारा विकसित किया गया था। चूंकि Nestybox अब Docker का हिस्सा है, Docker Sysbox परियोजना का मुख्य प्रायोजक है।
ऐसा कहने के बाद, Sysbox एक सामुदायिक ओपन-सोर्स परियोजना है और यह Docker द्वारा आधिकारिक रूप से समर्थित नहीं है (यानी, Docker सब्सक्रिप्शन में Sysbox समर्थन शामिल नहीं है)। समर्थन इस Github रेपो या Sysbox Slack Workspace के माध्यम से सर्वोत्तम प्रयास के आधार पर प्रदान किया जाता है।
हम Sysbox को विकसित करने और बेहतर बनाने में मदद करने के लिए समुदाय से भागीदारी को प्रोत्साहित करते हैं, जिसका लक्ष्य इसके उपयोग के मामलों और लाभों को बढ़ाना है। बाहरी अनुरक्षकों और योगदानकर्ताओं का स्वागत है।
Sysbox निम्नलिखित समस्याओं का समाधान करता है:
कंटेनरीकृत माइक्रोसर्विसेज के आइसोलेशन को बढ़ाना (कंटेनर में रूट होस्ट पर एक अन-विशेषाधिकार प्राप्त यूज़र से मैप होता है)।
होस्ट सुरक्षा से समझौता किए बिना कंटेनर के अंदर एक अत्यधिक सक्षम रूट यूज़र को सक्षम करना।
असुरक्षित विशेषाधिकार प्राप्त कंटेनरों या होस्ट Docker सॉकेट माउंट के बिना Docker-in-Docker (DinD) या Kubernetes-in-Docker (KinD) को सक्षम करके CI/CD पाइपलाइनों को सुरक्षित करना।
विकास, स्थानीय परीक्षण, सीखने आदि के लिए कंटेनरों को "VM-जैसे" वातावरण के रूप में उपयोग करने में सक्षम बनाना, मजबूत आइसोलेशन और कंटेनर के अंदर systemd, Docker, IDEs और अधिक चलाने की क्षमता के साथ।
कंटेनरों के अंदर लिगेसी ऐप्स चलाना (कम कुशल VMs के बजाय)।
VMs को एक आसान, तेज़, अधिक कुशल और अधिक पोर्टेबल कंटेनर-आधारित विकल्प के साथ बदलना, जिसे क्लाउड वातावरण में आसानी से तैनात किया जा सके।
बेयर-मेटल होस्ट को VMs के 2X घनत्व के साथ कई पृथक कंप्यूट वातावरणों में विभाजित करना (यानी, समान हार्डवेयर पर समान प्रदर्शन पर VMs के रूप में दोगुने VM-जैसे कंटेनर तैनात करना)।
महंगे नेस्टेड वर्चुअलाइज़ेशन का सहारा लिए बिना क्लाउड इंस्टेंसेस (जैसे, EC2, GCP, आदि) को कई पृथक कंप्यूट वातावरणों में विभाजित करना।
Sysbox लिनक्स होस्ट (बेयर-मेटल, VM, ऑन-प्रिम, क्लाउड, आदि) पर आसानी से इंस्टॉल हो जाता है। यह सभी प्रमुख क्लाउड-आधारित IaaS और Kubernetes सेवाओं (जैसे, EC2, GCP, GKE, EKS, AKS, Rancher, आदि) पर काम करता है।
एक बार इंस्टॉल हो जाने के बाद, Sysbox पर्दे के पीछे काम करता है: आप इसके साथ कंटेनर तैनात करने के लिए Docker, Kubernetes आदि का उपयोग करते हैं।
उदाहरण के लिए, यह सरल Docker कमांड Sysbox के साथ एक कंटेनर बनाता है:
$ docker run --runtime=sysbox-runc -it any_image
आपको एक अच्छी तरह से आइसोलेटेड कंटेनर मिलता है जो माइक्रोसर्विसेज के साथ-साथ सिस्टम-स्तरीय सॉफ्टवेयर (जैसे, systemd, Docker, Kubernetes, आदि) को सहज रूप से चलाने में सक्षम है, जो सामान्य रूप से VMs पर चलते हैं।
Sysbox का उपयोग कैसे करें, इसके बारे में अधिक जानकारी यहाँ।
जैसा कि दिखाया गया है, Sysbox अन-विशेषाधिकार प्राप्त कंटेनरों को systemd, Docker, Kubernetes आदि जैसे सिस्टम-स्तरीय वर्कलोड को सहज रूप से चलाने में सक्षम बनाता है, साथ ही आपको कंटेनर आइसोलेशन, प्रदर्शन, दक्षता और पोर्टेबिलिटी के बीच एक संतुलित दृष्टिकोण प्रदान करता है।
और यह आपके मौजूदा इंफ्रा में न्यूनतम कॉन्फ़िगरेशन परिवर्तनों के साथ करता है: बस Sysbox इंस्टॉल करें और अपने कंटेनर प्रबंधक/ऑर्केस्ट्रेटर को अपनी पसंद की इमेज का उपयोग करके इसके साथ कंटेनर लॉन्च करने के लिए कॉन्फ़िगर करें।
ध्यान दें कि जबकि Sysbox मानक कंटेनरों के आइसोलेशन को कठोर बनाता है और कई परिदृश्यों में असुरक्षित विशेषाधिकार प्राप्त कंटेनरों की आवश्यकता को समाप्त करता है, यह (अभी तक) VM-आधारित विकल्पों या gVisor जैसे यूज़र-स्पेस OS के समान आइसोलेशन स्तर प्रदान नहीं करता है। इसलिए, जिन परिदृश्यों में उच्चतम स्तर के आइसोलेशन की आवश्यकता होती है, वहाँ KubeVirt जैसे विकल्प बेहतर हो सकते हैं (कम प्रदर्शन और दक्षता और उच्च जटिलता और लागत की कीमत पर)।
अधिक जानकारी के लिए यह ब्लॉग पोस्ट देखें।
Sysbox परियोजना उन सभी के लिए है जो सिस्टम कंटेनरों का उपयोग करके प्रयोग, आविष्कार, सीखना और सिस्टम बनाना चाहते हैं। यह अत्याधुनिक OS वर्चुअलाइज़ेशन है, और योगदान का स्वागत है।
05/2022 में Docker द्वारा अधिग्रहण से पहले, Nestybox ने Sysbox के उन्नत संस्करण के रूप में Sysbox Enterprise की पेशकश की थी (जैसे, अधिक सुरक्षा, अधिक वर्कलोड, और आधिकारिक समर्थन)।
हालाँकि, अधिग्रहण के बाद, Sysbox Enterprise अब एक स्टैंडअलोन उत्पाद के रूप में पेश नहीं किया जाता है, बल्कि इसे Docker Desktop में शामिल कर लिया गया है (देखें Docker Hardened Desktop)।
नोट: चूंकि Sysbox Enterprise अब एक स्टैंडअलोन उत्पाद के रूप में पेश नहीं किया जाता है, Docker की योजना है कि Sysbox Enterprise की कुछ सुविधाओं को Sysbox Community Edition में उपलब्ध कराया जाए। सुविधाएँ अभी तय होना बाकी हैं (TBD) और इस पर आपकी प्रतिक्रिया का स्वागत है।
नीचे दी गई तालिका Sysbox कंटेनर रनटाइम की प्रमुख विशेषताओं का सारांश प्रस्तुत करती है।
यह Sysbox Community Edition (यानी, यह रेपो) और पहले उपलब्ध Sysbox Enterprise Edition (अब अप्रचलित) के बीच तुलना भी प्रदान करती है।
Sysbox सुविधाओं के बारे में अधिक जानकारी यहाँ।
यदि आपके कोई प्रश्न हैं, तो आप हमसे यहाँ संपर्क कर सकते हैं।
हम Sysbox द्वारा तैनात कंटेनरों को सिस्टम कंटेनर कहते हैं, इस तथ्य को उजागर करने के लिए कि वे न केवल माइक्रो-सर्विसेज (जैसा कि नियमित कंटेनर करते हैं) चला सकते हैं, बल्कि Docker, Kubernetes, Systemd, आंतरिक कंटेनर आदि जैसे सिस्टम सॉफ्टवेयर भी चला सकते हैं।
सिस्टम कंटेनरों के बारे में अधिक जानकारी यहाँ।
Sysbox होस्ट को निम्नलिखित आवश्यकताओं को पूरा करना चाहिए:
इसे समर्थित लिनक्स डिस्ट्रोस में से एक चला रहा होना चाहिए और समर्थित आर्किटेक्चर (जैसे, amd64, arm64) वाली मशीन होनी चाहिए।
हम न्यूनतम 4 CPUs (जैसे, 2 हाइपरथ्रेड्स के साथ 2 कोर) और 4GB RAM की अनुशंसा करते हैं। हालाँकि यह कोई कठोर आवश्यकता नहीं है, छोटे कॉन्फ़िगरेशन Sysbox को धीमा कर सकते हैं।
स्थापना की विधि उस वातावरण पर निर्भर करती है जिसमें Sysbox स्थापित किया जाएगा:
Kubernetes क्लस्टर पर Sysbox स्थापित करने के लिए, sysbox-deploy-k8s daemonset का उपयोग करें।
अन्यथा, अपने डिस्ट्रो के लिए Sysbox पैकेज का उपयोग करें।
वैकल्पिक रूप से, यदि आपके डिस्ट्रो के लिए पैकेज अभी तक उपलब्ध नहीं है, या आप अपस्ट्रीम से नवीनतम परिवर्तन प्राप्त करना चाहते हैं, तो आप स्रोत से Sysbox बना और स्थापित कर सकते हैं।
Sysbox स्थापित होने के बाद, आप अपने कंटेनर प्रबंधक या ऑर्केस्ट्रेटर (जैसे, Docker या Kubernetes) और अपनी पसंद की इमेज का उपयोग करके एक कंटेनर बनाते हैं।
Docker कमांड उदाहरण:
$ docker run --runtime=sysbox-runc --rm -it --hostname my_cont registry.nestybox.com/nestybox/ubuntu-bionic-systemd-docker
root@my_cont:/#
Kubernetes पॉड स्पेक उदाहरण:
apiVersion: v1
kind: Pod
metadata:
name: ubu-bio-systemd-docker
annotations:
io.kubernetes.cri-o.userns-mode: "auto:size=65536"
spec:
runtimeClassName: sysbox-runc
containers:
- name: ubu-bio-systemd-docker
image: registry.nestybox.com/nestybox/ubuntu-bionic-systemd-docker
command: ["/sbin/init"]
restartPolicy: Never
आप अपनी पसंद की कोई भी कंटेनर इमेज चुन सकते हैं, Sysbox इमेज पर कोई आवश्यकता नहीं रखता है।
Nestybox अपने Dockerhub और GitHub Container Registry रेपो में कई संदर्भ इमेज उपलब्ध कराता है। ये ऐसी इमेज हैं जिनमें आम तौर पर कंटेनरों के अंदर systemd, Docker, Kubernetes और बहुत कुछ शामिल होता है। Dockerfiles यहाँ हैं। अपनी आवश्यकताओं के अनुसार उपयोग और संशोधित करने के लिए स्वतंत्र महसूस करें।
हम अच्छा दस्तावेज़ीकरण प्रदान करने का प्रयास करते हैं; यह Sysbox परियोजना का एक प्रमुख घटक है।
आरंभ करने और Sysbox का अधिकतम लाभ उठाने में आपकी सहायता के लिए हमारे पास कई दस्तावेज़ हैं।
Sysbox डिस्ट्रो संगतता दस्तावेज़
Sysbox त्वरित आरंभ मार्गदर्शिका
Sysbox उपयोगकर्ता मार्गदर्शिका
Sysbox तेज़ और कुशल है, जैसा कि इस Nestybox ब्लॉग पोस्ट में वर्णित है।
Sysbox द्वारा बनाए गए कंटेनरों का प्रदर्शन OCI runc (Docker और Kubernetes के लिए डिफ़ॉल्ट रनटाइम) द्वारा बनाए गए कंटेनरों के समान है।
यहां तक कि सिस्टम कंटेनरों के अंदर तैनात कंटेनरों का भी उत्कृष्ट प्रदर्शन होता है, हालांकि नेटवर्क IO के लिए थोड़ा ओवरहेड होता है (जैसा कि अपेक्षित है क्योंकि आंतरिक कंटेनरों द्वारा उत्सर्जित पैकेट सिस्टम कंटेनर के अंदर एक अतिरिक्त नेटवर्क इंटरफ़ेस / ब्रिज से गुजरते हैं)।
अब, यदि आप VMs को बदलने वाले सिस्टम कंटेनरों को तैनात करने के लिए Sysbox का उपयोग करते हैं, तो प्रदर्शन और दक्षता लाभ महत्वपूर्ण हैं: आप उसी सर्वर पर VMs के रूप में 2X अधिक सिस्टम कंटेनर तैनात कर सकते हैं और समान प्रदर्शन प्राप्त कर सकते हैं, और यह मेमोरी और स्टोरेज खपत के एक अंश के साथ कर सकते हैं। ऊपर संदर्भित ब्लॉग पोस्ट में इस पर अधिक जानकारी है।
Sysbox को 2019 की शुरुआत में उत्कृष्ट OCI runc से फोर्क किया गया था और यह OCI runc डेवलपर्स द्वारा किए गए कार्य के कंधों पर खड़ा है।
ऐसा कहने के बाद, Sysbox शीर्ष पर महत्वपूर्ण कार्यक्षमता जोड़ता है। यह Go में लिखा गया है, और वर्तमान में तीन घटकों से बना है: sysbox-runc, sysbox-fs, और sysbox-mgr।
Sysbox लिनक्स कर्नेल की कई OS-वर्चुअलाइज़ेशन सुविधाओं का उपयोग करता है और उन्हें यूज़र-स्पेस में लागू OS-वर्चुअलाइज़ेशन तकनीकों के साथ पूरक करता है। इनमें सभी लिनक्स नेमस्पेस (विशेष रूप से यूज़र-नेमस्पेस) का उपयोग, procfs और sysfs का आंशिक वर्चुअलाइज़ेशन, चयनात्मक syscall ट्रैपिंग, और बहुत कुछ शामिल हैं।
Sysbox के डिज़ाइन के बारे में अधिक जानकारी Sysbox उपयोगकर्ता मार्गदर्शिका में पाई जा सकती है।
हालाँकि Sysbox द्वारा उत्पन्न कंटेनर कुछ मायनों में वर्चुअल मशीनों से मिलते जुलते हैं (जैसे, आप रूट के रूप में चल सकते हैं, कई सेवाएं चला सकते हैं, और अंदर Docker और K8s तैनात कर सकते हैं), Sysbox हार्डवेयर वर्चुअलाइज़ेशन का नहीं उपयोग करता है।
Sysbox एक शुद्ध OS-वर्चुअलाइज़ेशन तकनीक है जिसका उद्देश्य ऐसे कंटेनर बनाना है जो एप्लिकेशन के साथ-साथ सिस्टम-स्तरीय सॉफ्टवेयर को आसानी से और सुरक्षित रूप से चला सकें।
यह Sysbox द्वारा बनाए गए कंटेनरों को तेज़, कुशल और पोर्टेबल बनाता है (यानी, वे हाइपरवाइज़र से बंधे नहीं हैं)।
आइसोलेशन की दृष्टि से, यह कहना उचित है कि Sysbox कंटेनर नियमित Docker कंटेनरों की तुलना में मजबूत आइसोलेशन प्रदान करते हैं (लिनक्स यूज़र-नेमस्पेस और हल्के OS शिम के उपयोग के कारण), लेकिन VMs की तुलना में कमजोर आइसोलेशन (कंटेनरों के बीच लिनक्स कर्नेल साझा करने के कारण)।
हम Sysbox में योगदान का स्वागत करते हैं, चाहे वह छोटे दस्तावेज़ीकरण परिवर्तन हों, बग फिक्स हों, या सुविधा जोड़ हों। अधिक जानकारी के लिए कृपया योगदान दिशानिर्देश और डेवलपर मार्गदर्शिका देखें।
Sysbox कंटेनरों को कैसे सुरक्षित करता है, इसकी जानकारी के लिए उपयोगकर्ता मार्गदर्शिका का सुरक्षा अध्याय देखें।
यदि आपको ऐसे बग या समस्याएं मिलती हैं जो Sysbox भेद्यता को उजागर कर सकती हैं, तो कृपया [email protected] पर ईमेल भेजकर इनकी रिपोर्ट करें। कृपया इस रेपो में सुरक्षा मुद्दे न खोलें। धन्यवाद!
इसके अलावा, हाल ही में लिनक्स कर्नेल में कुछ भेद्यताएं पाई गई हैं जो कुछ मामलों में Sysbox कंटेनरों द्वारा प्रदान किए गए उन्नत आइसोलेशन को कम या समाप्त कर देती हैं। सौभाग्य से वे सभी हाल के लिनक्स कर्नेल में ठीक कर दी गई हैं। अधिक जानकारी के लिए Sysbox उपयोगकर्ता मार्गदर्शिका का भेद्यताएं और CVE अध्याय देखें, और आगे के प्रश्नों के लिए Sysbox Slack चैनल पर संपर्क करें।
समर्थन वर्तमान में सर्वोत्तम प्रयास के आधार पर प्रदान किया जाता है।
यदि आपके पास कोई प्रश्न या टिप्पणी है, तो हमें सुनना अच्छा लगेगा। आप हमारे स्लैक चैनल पर पहुंच सकते हैं या इस GitHub रेपो पर एक मुद्दा दर्ज कर सकते हैं।
यदि आप Sysbox के साथ कोई समस्या देखते हैं, तो कृपया मौजूदा मुद्दों को खोजें क्योंकि वे समस्या का वर्णन कर सकते हैं और एक कार्य-समाधान प्रदान कर सकते हैं।
समस्या निवारण दस्तावेज़ भी देखें।
Sysbox को अनइंस्टॉल करने से पहले, सुनिश्चित करें कि इसके साथ तैनात सभी कंटेनर बंद और हटा दिए गए हैं।
अनइंस्टॉलेशन की विधि Sysbox को स्थापित करने के लिए उपयोग की गई विधि पर निर्भर करती है:
Kubernetes क्लस्टर पर Sysbox को अनइंस्टॉल करने के लिए, इन निर्देशों का पालन करें।
अन्यथा, Sysbox पैकेज को अनइंस्टॉल करने के लिए, इन निर्देशों का पालन करें।
यदि Sysbox स्रोत से बनाया और स्थापित किया गया था, तो इन निर्देशों का पालन करें।
निम्नलिखित Sysbox रोडमैप में सुविधाओं की एक सूची है।
हम उन्हें यहां सूचीबद्ध करते हैं ताकि हमारे उपयोगकर्ता बेहतर विचार प्राप्त कर सकें कि हम कहां जा रहे हैं और हमें फीडबैक दे सकें कि वे इनमें से किसे सबसे अधिक (या कम से कम) पसंद करते हैं।
यहाँ एक छोटी सूची है; Sysbox इश्यू ट्रैकर में और भी बहुत कुछ है।
अधिक लिनक्स डिस्ट्रोस के लिए समर्थन।
procfs और sysfs वर्चुअलाइज़ेशन में और सुधार।
कंटेनर आइसोलेशन में निरंतर सुधार।
उचित अनुमतियों के साथ सिस्टम कंटेनरों के अंदर होस्ट डिवाइसों को उजागर करना।
Slack: Sysbox Slack Workspace
ईमेल: [email protected]
हम सोमवार-शुक्रवार, प्रशांत समय 9am-5pm उपलब्ध हैं।
हम Sysbox का उपयोग करने और/या योगदान देने के लिए आपको बहुत धन्यवाद देते हैं। हमें उम्मीद है कि आप इसे दिलचस्प पाएंगे और यह आपको नए और अधिक शक्तिशाली तरीकों से कंटेनरों का उपयोग करने में मदद करेगा।