- Containerization एक Swift-आधारित open source टूल है जो macOS पर Linux कंटेनर चलाने में सक्षम बनाता है
- यह Apple Silicon-आधारित Mac पर काम करता है और Virtualization.framework का उपयोग करके हर कंटेनर को एक हल्की virtual machine के भीतर अलग-थलग चलाता है
- इसमें OCI इमेज मैनेजमेंट, remote registry integration, ext4 file system बनाना, कंटेनर environment control जैसी कई सुविधाएँ शामिल हैं
- Rosetta 2 का उपयोग करके Apple Silicon पर भी x86_64 प्रोसेस चलाने का समर्थन दिया जा सकता है
- बेहद तेज boot time, lightweight environment, kernel version customization के जरिए यह डेवलपर्स की flexibility और performance बढ़ाता है
प्रोजेक्ट अवलोकन
- Containerization एक Swift पैकेज है जो applications को Linux कंटेनर उपयोग करने में मदद करता है
- यह Swift भाषा में implement किया गया है और Apple Silicon-आधारित Mac पर Virtualization.framework का उपयोग करके काम करता है
- API के माध्यम से यह निम्नलिखित सुविधाएँ देता है
- OCI इमेज प्रबंधन
- remote container registry integration
- ext4 file system बनाना और deploy करना
- Netlink socket family के साथ interaction
- तेज boot के लिए optimized Linux kernel उपलब्ध कराना
- lightweight virtual machine बनाना और प्रबंधित करना
- virtual machine के runtime environment को नियंत्रित करना
- containerized process बनाना और नियंत्रित करना
- Rosetta 2 के जरिए Apple Silicon पर x86_64 processes चलाना
- API documentation अलग आधिकारिक पेज पर उपलब्ध है
डिज़ाइन और संरचना
- प्रत्येक Linux कंटेनर एक स्वतंत्र virtual machine के भीतर चलता है
- हर कंटेनर को dedicated IP address दिया जा सकता है, जिससे port forwarding के बिना भी नेटवर्क मैनेजमेंट आसान हो जाता है
- optimized kernel settings और हल्के root file system की वजह से 1 सेकंड से कम कंटेनर boot संभव है
- vminitd, Containerization का एक subproject है, जो virtual machine के भीतर शुरुआती process के रूप में काम करने वाला एक lightweight init system है
- यह GRPC API के माध्यम से runtime environment सेट करता है और कंटेनर process संचालन प्रबंधन में मदद करता है
- यह input/output, signals और event handling को कॉल करने वाले process तक पहुंचाता है
आवश्यकताएँ
- Apple Silicon Mac डिवाइस आवश्यक है
- पैकेज build करने के लिए
- macOS 15 या उससे ऊपर और Xcode 26 Beta
- या macOS 26 Beta 1 या उससे ऊपर आवश्यक है
- macOS 15 उपयोग करने पर, नीचे दिया गया feature सीमित रहेगा
- non-isolated container networking: एक ही vmnet नेटवर्क पर मौजूद कंटेनरों के बीच संचार संभव नहीं है
उपयोग उदाहरण
- cctl executable उपलब्ध है: यह API की विभिन्न सुविधाओं को प्रयोग करने के लिए playground जैसा है
- प्रमुख command उदाहरण
- OCI इमेज में बदलाव करना
- container registry login
- root file system block बनाना
- सरल Linux कंटेनर चलाना
Linux kernel कॉन्फ़िगरेशन
- कंटेनरों के लिए lightweight virtual machine चलाने हेतु Linux kernel आवश्यक है
- Containerization द्वारा दिया गया optimized kernel configuration kernel directory में स्थित है
- यह configuration न्यूनतम features रखकर तेज boot और lightweight environment प्रदान करता है
- आवश्यकता के अनुसार हर कंटेनर के लिए अलग kernel configuration और version निर्धारित करने के लिए API उपलब्ध है
- इससे अलग-अलग kernel versions और configurations का परीक्षण किया जा सकता है
- Kata Containers प्रोजेक्ट द्वारा उपलब्ध vmlinux.container जैसे precompiled kernels का उपयोग किया जा सकता है
- लेकिन VIRTIO drivers का kernel में built-in (compiled-in) होना जरूरी है
डेवलपमेंट और टेस्ट प्रक्रिया सारांश
- Swift, Static Linux SDK आदि के साथ environment तैयार करना आवश्यक है
- source code build और test किया जा सकता है (
make all, make test integration commands आदि)
- integration tests चलाने के लिए kernel image आवश्यक है
- gRPC/Protobuf से संबंधित specific versions उपयोग करने वाली dependency configuration का समर्थन है
- API documentation का automatic generation और local preview फीचर शामिल है
open source योगदान और प्रोजेक्ट स्थिति
- योगदान का स्वागत है
- version 0.1.0 पहला आधिकारिक release है, और source stability केवल minor version range के भीतर ही गारंटीकृत है
- भविष्य के minor releases में policy बदलने की संभावना है
सारांश
- Containerization एक नवोन्मेषी Swift पैकेज है जो macOS पर डेवलपर्स को optimized environment में Linux कंटेनरों का प्रबंधन, संचालन और विकास करने देता है
- हर कंटेनर को हल्की dedicated virtual machine में चलाकर यह isolation, performance, networking, kernel customization जैसे फायदे देता है
- यह उन डेवलपर्स के लिए उपयुक्त समाधान है जो macOS native experience में open source container environment का विस्तार करना चाहते हैं
1 टिप्पणियां
Hacker News राय
जो बात मुझे सबसे ज़्यादा चौंकाने वाली और दिलचस्प लगी, वह यह है
एक राय यह भी है कि Apple का open source कम्युनिटी में भाग लेना इतना आश्चर्यजनक नहीं होना चाहिए
Swift और उससे जुड़े frameworks में भी open source कम्युनिटी के काफ़ी योगदान हैं
चूँकि यह प्रोजेक्ट Linux से जुड़ा है, इसलिए Linux के copyleft(मज़बूत open source license) के कारण Apple के पास सहयोगात्मक तरीका अपनाने के अलावा विकल्प नहीं है, ऐसा भी एक नज़रिया है
संबंधित वीडियो के तौर पर WWDC 2025 प्रस्तुति वीडियो(https://developer.apple.com/videos/play/wwdc2025/346/) की सिफारिश
इसमें हर container एक हल्के Linux VM के रूप में अलग किया जाता है
containerटूल डाउनलोड करके सीधे चलाया जा सकता है(https://github.com/apple/container/releases), macOS 26 आवश्यक हैयह submission https://github.com/apple/containerization है,
containerप्रोजेक्ट नहींcontainerizationका उपयोग app को container sidecar के साथ deploy करने के लिए है, इसलिए यह और भी दिलचस्प खबर हैजबकि
containerका उद्देश्य डेवलपर्स को'docker run ...'जैसी environment देना हैcontainerसे जुड़ा अलग HN thread भी है(https://news.ycombinator.com/item?id=44229239)यह macOS 15 पर भी चल सकता है, लेकिन कुछ networking features सीमित हो सकते हैं
प्रेस रिलीज़ और WWDC session में यह बताया गया है कि CLI टूल https://github.com/apple/container पर है
ऐसे टूल्स में दिलचस्पी रखने के नाते उम्मीद थी कि यह नवीनतम Xcode Beta में default रूप से शामिल होगा, लेकिन अभी तक नहीं है
prebuilt package अभी तैयार किया जा रहा है, और प्रगति सार्वजनिक issue(https://github.com/apple/container/issues/54) में देखी जा सकती है
इस टिप्पणी के ठीक 1 मिनट बाद prebuilt package रिलीज़ होने की खबर साझा की गई(https://github.com/apple/container/releases/tag/0.1.0)
संबंधित चर्चा अलग HN thread(https://news.ycombinator.com/item?id=44229239) में चल रही है
सोच रहा हूँ Docker के नज़रिए से यह कैसा महसूस होगा
कल्पना है कि Docker for Desktop के काफ़ी यूज़र Mac इस्तेमाल करते होंगे
एक राय यह है कि यह बदलाव उलटे Docker Desktop के विकास को काफ़ी आसान बना देगा
अब अलग से खुद Linux VM सेटअप नहीं करना पड़ेगा, इसलिए development complexity कम होगी
फिर भी अनुमान है कि कई यूज़र परिचित CLI, Docker Compose, और Docker के अलग UX के कारण मौजूदा Docker Desktop को ही पसंद करेंगे
container runtime बदलना आसान काम नहीं है
एक अंदाज़ा यह भी है कि Docker के लिए यह वैसा ही महसूस होगा जैसा podman को देखते समय होता है
Docker Desktop बंद-स्रोत commercial software है, जबकि यह प्रोजेक्ट free software है, इसलिए यूज़र के नज़रिए से यह अच्छी खबर है
क्या यह तकनीक Linux containers को macOS app में bundle करने के लिए इस्तेमाल हो सकती है, यह सवाल उठा
उदाहरण के लिए, GPT जैसे टूल को root CLI commands के बिना Linux environment तक पहुँच देनी हो, तो इसकी ज़रूरत हो सकती है
अगर macOS 26 पर ही चलना स्वीकार्य है, तो इसे तुरंत उसी उद्देश्य के लिए इस्तेमाल किया जा सकता है
नहीं तो Virtualization.framework को सीधे इस्तेमाल करके भी यह संभव है, लेकिन अतिरिक्त काम ज़्यादा होगा
पक्का विश्वास जताया गया कि यह तकनीक ठीक इसी उद्देश्य के लिए आई है
हर container अपने अलग VM में चलता है, इसलिए पूरा isolation और अलग IP जैसी दिलचस्प संरचना मिलती है, लेकिन ऐसा डिज़ाइन Linux या Windows में सामान्य नहीं है
अगर डेवलपमेंट टीम में एक भी व्यक्ति Mac इस्तेमाल नहीं करता, तो local development model टूट सकता है
इसलिए Docker/Compose को replace करना आसान नहीं होगा, यही निष्कर्ष है
तीन प्रमुख desktop OS में से अब दो आधिकारिक रूप से Linux VM चला सकते हैं और Linux-native applications चला सकते हैं
इस प्रवाह को देखकर कहा जा सकता है कि Linux ने व्यावहारिक रूप से जीत हासिल कर ली है
Linux syscall API अब लगभग हर जगह चलने वाला एक universal API बनता दिख रहा है
इसके जवाब में कहा गया कि दो बड़े non-Linux OS पर Linux-आधारित application development का सामान्य रूप से होना ही "Linux की जीत" नहीं माना जा सकता
desktop Linux की वास्तविकता अब भी अस्थिर है और उसे सुझाना मुश्किल है, ऐसा अनुभव साझा किया गया
हर साल नवीनतम PC या laptop पर Fedora/Ubuntu इंस्टॉल करके देखने पर भी usability और stability का भरोसा नहीं बनता, ऐसा साफ़ फ़ीडबैक दिया गया
एक और नज़रिया यह है कि बाकी दो platforms Linux छोड़े बिना उसका उपयोग करने का तरीका देकर desktop बाज़ार में Linux की अपनी हिस्सेदारी बढ़ने की रफ़्तार को धीमा कर रहे हैं
graphics, audio, GUI पक्ष में अभी भी कोई ठोस समाधान नहीं है, यह कमी भी रेखांकित की गई
यह सवाल भी उठा: "अगर खेल में खिलाड़ी सिर्फ़ तुम ही हो, तो क्या उसे जीत कहेंगे?"
मज़ाक में कहा गया कि आम Windows और Mac यूज़र को तो शायद Linux क्या है, यह भी पता नहीं होगा
"Linux के साथ macOS" यह तथ्य ही अपने-आप में असरदार है, ऐसी राय भी आई
क्या इन्होंने memory management भी optimize किया है, यानी VM ज़रूरत से ज़्यादा memory न ले, इस पर जिज्ञासा जताई गई
ठीक-ठीक कौन-सी प्रक्रिया कारण है पता नहीं, लेकिन build speed बहुत धीमी लग रही है
-c,-moptions से CPU/memory resources बढ़ाकर भी खास असर महसूस नहीं हुआपहले Silicon Mac + Rancher Desktop संयोजन में x86 image build करने का दिखावा हुआ, लेकिन वे images असली x86 hardware पर ठीक से चली ही नहीं, ऐसा अनुभव साझा किया गया
छोटे डेमो(https://developer.apple.com/videos/play/wwdc2025/346) में VM का सैकड़ों milliseconds में boot होना प्रभावशाली लगा
यह Virtualization.framework पर चलता है, जिसे Docker Desktop/Colima/UTM आदि भी वैकल्पिक रूप से इस्तेमाल करते रहे हैं
कई containers को parallel चलाने पर memory overhead कितना होगा, इस पर जिज्ञासा है