عن المشروع

Buildah هي أداة سطر أوامر مفتوحة المصدر لبناء صور حاويات Open Container Initiative (OCI). وهي جزء من منظومة مشروع containers وترتبط ارتباطًا وثيقًا بـ Podman. القدرات الأساسية الموصوفة في README: - إنشاء حاوية عمل من الصفر أو من صورة موجودة كنقطة انطلاق. - إنشاء صورة من حاوية عمل أو من تعليمات في Dockerfile/Containerfile. - بناء الصور إما بصيغة صورة OCI أو بصيغة صورة Docker التقليدية upstream. - تركيب وإلغاء تركيب نظام الملفات الجذري لحاوية عمل للتلاعب المباشر به. - استخدام المحتويات المحدّثة لنظام الملفات الجذري لحاوية كطبقة نظام ملفات لإنشاء صورة جديدة. - حذف حاوية عمل أو صورة، وإعادة تسمية حاوية محلية. صُممت Buildah لتعمل دون الحاجة إلى صلاحيات الجذر. وتكرر أوامرها العمليات الموجودة في Dockerfile، مما يتيح بناء الصور مع Dockerfiles وبدونها. ويذكر المشروع أن هدفه هو توفير واجهة أساسية بمستوى أدنى بأسلوب coreutils لبناء الصور، وأن البناء بدون Dockerfiles يتيح دمج لغات برمجة نصية أخرى في عملية البناء. تتبع Buildah نموذج fork-exec ولا تعمل كخادم daemon؛ وهي مبنية على واجهة Go API يمكن تضمينها في أدوات أخرى. يوضح README العلاقة مع Podman: يتخصص Podman في صيانة صور OCI وتعديلها (السحب، الوسم) وفي إنشاء الحاويات من تلك الصور وتشغيلها وصيانتها. وبالنسبة لبناء الصور عبر Dockerfiles، يستخدم Podman واجهة Go API الخاصة بـ Buildah ويمكن تثبيته بشكل مستقل. ومن الفروق الرئيسية مفهوم الحاوية: فحاويات Podman يُقصد بها أن تكون طويلة العمر، بينما توجد حاويات Buildah للسماح بإضافة المحتوى مرة أخرى إلى صورة. ويشير README إلى أن `buildah run` يحاكي أمر RUN في Dockerfile، بينما يحاكي `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 إضافية.