इस प्रोजेक्ट के बारे में

Buildah एक ओपन-सोर्स कमांड-लान टूल है जो Open Container Initiative (OCI) कंटेनर इमेज बनाने के लिए है। यह containers प्रोजेक्ट इकोसिस्टम का हिस्सा है और Podman से निकटता से संबंधित है। README में वर्णित मुख्य क्षमताएँ: - खाली या मौजूदा इमेज को शुरुआती बिंदु के रूप में उपयोग करके एक कार्यशील कंटेनर बनाएँ। - किसी कार्यशील कंटेनर से या Dockerfile/Containerfile में दिए गए निर्देशों से एक इमेज बनाएँ। - इमेज को OCI इमेज फॉर्मेट या पारंपरिक अपस्ट्रीम Docker इमेज फॉर्मेट में बनाँ। - सीधे हेरफेर के लिए कार्यशील कंटेनर के रूट फाइलसिस्टम को माउंट और अनमाउंट करें। - कंटेनर के रूट फालसिस्टम की अद्यतन सामग्री को फाइलसिस्टम लेयर के रूप में उपयोग करके एक नई इमेज बनाएँ। - किसी कार्यशील कंटेनर या इमेज को हटाएँ, और किसी स्थानीय कंटेनर का नाम बदलें। Buildah को रूट विशेषाधिकारों की आवश्यकता के बिना काम करने के लिए डिज़ाइन किया गया है। इसके कमांड Dockerfile में पाई जाने वाली क्रियाओं को दोहराते हैं, जिससे Dockerfile के साथ और बिना दोनों तरह से इमेज बिल्ड की अनुमति मिलती है। प्रोजेक्ट का कहना है कि इसका लक्ष्य इमेज बनाने के लिए निले स्तर का coreutils-शैली इंटरफ़ेस प्रदान करना है, और Dockerfile के बिना बिल्ड करने से बिल्ड प्रक्रिया में अन्य स्क्रिप्टिंग भाषाओं का एकीकरण संभव होता है। Buildah एक fork-exec मॉडल का पालन करता है और डेमन के रूप में नहीं चलता; यह एक Go API पर आधारित है जिसे अन्य टूल्स में vendored किया जा सकता है। README Podman के साथ संबंध समझाता है: Podman OCI इमेज को बनाए रखने और संशोधित करने (pull, tag) तथा उन इमेज से कंटेनर बनाने, चलाने और बनाए रखने में विशेषज्ञता रखता है। Dockerfile के माध्यम से इमेज बनाने के लिए, Podman Buildah के Go API का उपयोग करता है और स्वतंत्र रूप से इंस्टॉल किया जा सकता है। एक मुख्य अंतर कंटेनर की अवधारणा है: Podman कंटेनर लंबे समय तक चलने के लिए होते हैं, जबकि Buildah कंटेनर सामग्री को वापस इमेज में जोड़ने की अनुमति देने के लिए मौजूद होते हैं। README बताता है कि `buildah run` Dockerfile में RUN कमांड की नकल करता है, जबकि `podman run` `docker run` की नकल करता है, और अंतर्निहित स्टोरेज अंतरों के कारण, Podman कंटेनर Buildah के भीतर से दिखाई नहीं देते और इसके विपरीत भी। README में एक शेल उदाहरण शामिल है जो एक बेस इमेज से कंटेनर बनाता है, पैकेज अपडेट चलाता है और lighttpd इंस्टॉल करता है, बिल्ड-टाइम एनोटेशन सेट करता है, कमांड और एक्सपोज़्ड पोर्ट कॉन्फ़िर करता है, और कंटेनर को एक इमेज नाम पर कमिट करता है। प्रलेखित CLI कमांड में शामिल हैं: add, build, commit, config, containers, copy, from, images, info, inspect, mount, pull, push, rename, rm, rmi, run, tag, umount, unshare, और version। README ट्यूटोरियल, इंस्टॉलेशन नोट्स, एक ट्रबलशूटिंग गाइड, डेमो, एक चेंजलॉग, योगदान दिशानिर्देश, और एक विकास योजना के लिंक भी देता है। भविष्य के लक्ष्यों में अधिक CI परीक्षण और संभवतः अतिरिक्त CLI कमांड शामिल हैं।