هذا المقال كُتب على مجتمع أسس, كامل التعليقات هنا
السلام عليكم ورحمة الله وبركاته. في هذا الموضوع سوف اشرح كيفية تشغيل docker-compose مع podman وهو محرك حاويات جديد من منظمه Containers التي تدير مشروع Kubernetes وغيرها من مشاريع الحاويات. تركيز podman هو على الامان, بحيث تم تصميمه لتشغيل الحاويات بدون الحاجة للوصول لصلاحيات الجذر. وتم تصميمه بطريقة مجزئه عكس دوكر. معظم مطورين Podman هم من رد هات, وهو محرك الحاويات الرسمي لتوزيعات رد هات.
تاكد من دعم شبكات Podman ل dns.
في بعض الانظمه قد لا تتوفر الحزم المطلوبه حتى تدعم شبكات podman ال dns, حتى يمكن للحاويات تواصل بين بعضها بدون الحاجه لعنوان ثابت.
|
|
تشغيل dnsmasq (ملاحظه سوف ياخذ port 53 بلاغ حول المشكلة)
|
|
الان اي شبكة يتم انشائها ستدعم ميزه dnsname للحاويات.
بدون وصول للجذر (Rootless)
هذه الطريقة المنصوح فيها استخدام podman. لانها تعزل الحاويات بشكل كامل بدون اي وصول لكامل صلاحيات النظام.
تثبيت حزمة podman-docker و Pip.
ثبت حزمة podman-docker وهي حزمة مخصصه لمحاكاه دوكر في بودمان من اجل التوافقية. اما لتثبيت docker-compose فيستحسن تثبيته من خلال pip, مديرحزم بايثون لانه يعطي اخر اصدار منه.
Redhat based
|
|
Debian based2
|
|
Suse based
|
|
تحديث pip وتثبيت docker-compose
احيانا اصدار pip في التوزيعة قديم خاصه لو توزيعه ثباته مثلا دبيان او RHEL. سوف يحتاج pip للتحديث حتى تتمكن من تثبيت حزم حديثة
|
|
ثبت docker-compose
|
|
تشغيل podman socket
حزمة docker-compose تتواصل مع محرك دوكر عبر socket. لذلك نحتاج ان نحاكي ال socket حتى يعمل docker-compose
|
|
اخر امر يجب ان يظهر لك ان socket في حاله Active(running)
موقع ال Socket سوف يكون مختلف عن المعتاد لدوكر لانها سوف تعمل بدون وصول لصلاحيات الجذر.
لذلك نقوم بتغيير موقع ال socket عبر هذا الامر:
|
|
من اجل حفظ التغيير اضف DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock
الى اخر ملف .bash_profile
او .zsh_profile
.
والان اصبح podman جاهز للتعامل مع docker-compose. فقط جهز ملف docker-compose.yml ثم نفذ امر docker-compose up -d
وسوف يعمل معك.
في حاله كنت تستخدم ports اقل من 1000 ستحتاج لتغيير قواعد النظام للسماح بمداخل اقل من 1000 لبرامج بدون صلاحيات جذر. شرحت كيف تسمح ل ports اقل من 1000 لحاويات بدون جذر هنا
مع الوصول لصلاحيات الجذر
نفس الخطوات تقريبا لكن هناك اختلافين.
تشغيل Podman.socket
سيتم تشغيل podman.socket في نفس مكان دوكر المعتاد لاننا سوف نعطيه وصول لصلاحيات الجذر.
|
|
للتاكد من انها تعمل
|
|
يجب ان يظهر لك رد OK
تثبيت docker-compose
|
|
ملاحظه عند تثبيت الحزمه مع وصول للجذر سوف تحتاج لاستخدام sudo لتعمل معك.
والان بامكانك تشغيل اي مشروع docker-compose. فقط انشئ ملف docker-compse.yml ثم sudo docker-compose up -d
وسوف يعمل المشروع معك.
مصادر
https://fedoramagazine.org/use-docker-compose-with-podman-to-orchestrate-containers-on-fedora/
https://podman.io/getting-started/network#using-dns-in-container-networks