
نُشر هذا المقال أصلاً في مجلة Fedora Magazine بقلم يزن المنشد.
في هذا المقال، سنستعرض محرك Podman وكيفية استخدامه لبناء وتشغيل تطبيق ويب بسيط ونظيف باستخدام Node.js.
يُعد Podman محرك حاويات لا يحتاج إلى مشغل خلفي (Daemonless) لتطوير وإدارة وتشغيل حاويات OCI على نظام Linux بكل أمان وكفاءة وبدون الحاجة لصلاحيات الجذر (Rootless). تتطابق أوامر Podman مع أوامر Docker إلى حد كبير، حتى أنه يمكنك استخدام أمر بديل في الطرفية عبر alias docker=podman.
تثبيت Podman على Fedora
يأتي Podman مثبتاً بشكل افتراضي في نظام Fedora Workstation، ولكن إذا لم يكن مثبتاً لديك لأي سبب، يمكنك تثبيته بالأمر التالي:
$ sudo dnf install podman -y
أما بالنسبة لمستخدمي Fedora Silverblue، فإن Podman مدمج أساساً في النظام. يمكنك الآن سحب وتشغيل حاوية الاختبار للتأكد من أن كل شيء يعمل بالشكل المطلوب:
$ podman pull hello-world
$ podman run hello-world
إذا كانت عملية التثبيت صحيحة، سيظهر لك المخرج التالي في الطرفية:
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
إنشاء تطبيق Node.js بسيط
أولاً، سنقوم بإنشاء مجلد للتطبيق والانتقال إليه:
$ mkdir webapp && cd webapp
بعد ذلك، أنشئ ملف package.json لتحديد اعتماديات المشروع:
{
"dependencies": {
"express": "*"
},
"scripts": {
"start": "node index.js"
}
}
ثم أنشئ ملف index.js وأضف الكود التالي لإرجاع رسالة ترحيبية:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send("Hello World!");
});
app.listen(8080, () => {
console.log("Listening on port 8080");
});
يمكنك أيضاً الاطلاع على الكود المصدري عبر مستودع GitHub.
إنشاء ملف الحاوية (Dockerfile)
الآن، قم بإنشاء ملف باسم Dockerfile داخل مجلد webapp (تأكد من كتابة أول حرف كبيراً)، وأضف التعليمات التالية:
FROM node:alpine
WORKDIR /usr/app
COPY ./ ./
RUN npm install
CMD ["npm", "start"]
بناء الصورة باستخدام Podman
تأكد من وجودك داخل مجلد webapp، ثم قم ببناء صورة الحاوية بتنفيذ:
$ podman build -t webapp .
ملاحظة: لا تنس وضع النقطة (
.) في نهاية الأمر لتحديد المسار الحالي كسياق للبناء.
بعد انتهاء البناء، يمكنك استعراض الصور المتوفرة محلياً عبر:
$ podman images
تشغيل الحاوية
الخطوة التالية هي تشغيل الصورة داخل حاوية وتوجيه المنفذ 8080:
$ podman run -d -p 8080:8080 --name my-webapp webapp
افتح متصفح الويب وانتقل إلى http://localhost:8080، وسترى رسالة “Hello World!” تعمل بنجاح.
إيقاف الحاويات وحذفها
للتحقق من الحاويات التي تعمل حالياً أو المتوقفة:
$ podman ps -a
لإيقاف الحاوية:
$ podman stop my-webapp
لحذف الحاوية بعد إيقافها:
$ podman rm my-webapp
وأخيراً، لحذف صورة الحاوية من جهازك:
$ podman rmi webapp
الخلاصة
يمنحك Podman تجربة مطابقة لمعايير OCI مع ميزة الأمان العالي بفضل العمل بدون خادم خلفي (Daemonless) وبدون صلاحيات الروت (Rootless). جرب بناء تطبيقاتك القادمة بواسطته على Fedora واستمتع بأداء خفيف وسريع.

