Red Hat يستبدل Docker بـ Podman

من الواضح أن العواطف حول Red Hat في الوقت الحاضر لها تركيز مختلف تمامًا وعالمي للغاية ، لكننا ما زلنا نتحدث عن خاصتنا - المحلية والتطبيقية من عالم الحاويات. منذ بداية هذا العام ، عملت Red Hat بنشاط على استبدال Docker المسمى Podman (أو libpod ). لسبب ما ، لم يكتبوا عن هذا المشروع حتى الآن ، والآن حان الوقت المناسب للتعرف عليه ، والتعرف على أصوله والتفكير في الاحتمالات. دعنا نذهب!



CRI-O كقصة خلفية


إذا نظرت إلى العالم الحديث لحاويات Linux ، فمن السهل أن ترى أن موضوع مقال اليوم هو مجرد واحدة من مراحل استراتيجية Red Hat طويلة المدى. تأكيد حي على ذلك هو مشروع CRI-O ، الذي كتبناه منذ حوالي عام. باختصار ، CRI-O هو تنفيذ Kubernetes CRI (واجهة وقت تشغيل الحاوية) لإطلاق أوقات تشغيل الحاويات المتوافقة مع معيار OCI (مبادرة الحاوية المفتوحة). حتى أقصر ، هذا بديل لـ Docker كوقت تشغيل لـ Kubernetes. (مبادرة مماثلة تقنيًا لـ K8s من Docker Inc هي cri-containerd ، والتي كتبنا عنها أيضًا ؛ في نفس المقالة ، هناك مقارنة بين أداء هذين الحلين.)

تاريخ CRI-O هو أنه بينما كانت OCI تعد معايير للحاويات ( مواصفات وقت التشغيل ومواصفات الصورة ) [والتي ، مع ذلك ، حدثت أيضًا بمشاركة Red Hat] ، تم إنشاء مشروع جديد يسمى OCID ووضعه في حاضنة Kubernetes في RH ( برنامج Open Container Initiative Daemon) ، والذي تم لاحقًا [بطلب من OCI] إعادة تسمية CRI-O. كان الغرض منه "تنفيذ واجهة قياسية لبيئة التشغيل للحاويات في Kubernetes" ، وتم تنفيذ الترويج في "الكتل التقنية" كجزء من مشروع Red Hat الأكبر لإنشاء نظام تشغيل للحاويات - Project Atomic .


قبعات مع شعار CRI-O على KubeCon + CloudNativeCon أمريكا الشمالية 2017

على مدار الماضي ، نضجت CRI-O إلى الإصدار 1.0 ، وتلقت الدعم في Minikube ، ويمكن اعتبار إنجازها الأخير اعتماد واجهة الحاوية الافتراضية في مشروع Kubic ، والتي تم تطويرها ، على الأخص ، من قبل المجتمع التنافسي (لـ Red Hat) توزيع Linux - openSUSE.

بالعودة إلى موضوع المقال: كان بودمان في الأصل جزءًا من CRI-O.

مظهر وجوهر بودمان


تم الإعلان الرسمي عن مشروع Podman (الاسم المختصر لـ "pod manager") في فبراير من هذا العام:

"Podman (المعروف سابقًا باسم kpod) موجود منذ الصيف الماضي. في البداية ، كان جزءًا من مشروع CRI-O . قمنا بتخصيص بودمان لمشروع منفصل - ليبود . أردنا أن ينمو كل من Podman و CRI-O بالسرعة التي تناسبهما. كلاهما يعمل بشكل رائع سواء بشكل فردي (كمرافق مستقلة) أو معًا ".

لهذا السبب ، كان عنوان الإعلان نفسه " إعادة تقديم" . وأول إصدار عام لـ Podman - v0.2 - تم قبل أسبوعين من هذا الإعلان. إذن ما هو جوهر بودمان؟

هدف Podman هو توفير واجهة وحدة تحكم لإطلاق الحاويات خارج نظام التزامن. من الجدير بالذكر أنه يمكن دمج الحاويات التي تم إطلاقها في مجموعات خاصة ذات مساحات أسماء شائعة ، أي القرون - أصبح هذا المفهوم معروفًا بالفعل بفضل Kubernetes. يتبع المشروع أيديولوجية أوامر UNIX ، حيث تقوم كل أداة مساعدة بشيء واحد فقط ، ولكنها جيدة. تم بالفعل ذكر تفاصيل أخرى مهمة ، والتي يؤكدها المطورون بلا كلل ، أعلاه في الإعلان: يمكن استخدام Podman مع CRI-O وبشكل مستقل.

بشكل عام ، الفكرة الرئيسية من Podman هي تزويد مستخدمي Kubernetes الذين يختارون CRI-O كوقت تشغيل الحاوية مع نظير واجهة وحدة التحكم Docker CLI (للتفاعل مع الحاويات والصور التي يتم تشغيلها في مجموعات):

"يطبق Podman 38 من 40 من أوامر Docker CLI المحددة في Docker 1.13 (في وقت الإعلان في فبراير - ترجمة تقريبًا ) ، ولكن لم نكرر بعضها على وجه التحديد. على سبيل المثال ، متعلق بـ Docker Swarm - بدلاً من ذلك ، بالنسبة للقرون / الحاويات التي تحتاج إلى تنسيق ، نقترح استخدام Kubernetes. أيضا ، لم يتم تنفيذ بعض أوامر Docker Plugins ، مثل plugins Volume and للشبكة. يمكن العثور على قائمة كاملة بأوامر Podman وما يعادلها في Docker في صفحة Podman Usage Transfer . "


جزء من جدول المقارنة لأوامر Docker و Podman: معظمها متماثل ، ولكن هناك اختلافات

ومع ذلك ، يكمن وراء هذه الهوية المرئية في الواجهة اختلاف أساسي في الهندسة المعمارية: إذا تواصل Docker CLI مع Docker daemon لتنفيذ الأوامر ، فإن Podman هو أداة مساعدة مستقلة لا تتطلب أي daemons لعملها.

على الأقل بسبب هذا الاختلاف المعماري ، سيكون من الأصح مقارنة Podman ليس مع Docker على هذا النحو ، ولكن مع crictl ، أداة وحدة تحكم من أدوات cri (يتم استخدامها ، على وجه الخصوص ، لتكامل الحاوية مع Kubernetes). وهناك اختلافات وظيفية: يمكن لـ Podman إعادة تشغيل الحاويات المتوقفة ، كما يوفر إدارة صور الحاويات. (للحصول على مقارنة أكثر تفصيلاً ، راجع مدونة OpenShift .)

مع إصدار Fedora 28 Atomic Host (في مايو) ، أصبحت Podman أداة إدارة الحاويات الافتراضية لتوزيع Linux هذا. ومؤخرا فقط ، في سبتمبر ، في مؤتمر لينكس All Systems Go! في برلين ، قدم Dan Walsh ، رئيس فريق Red Hat Container Engineering ، Podman إلى جمهور أوسع - يمكن رؤية تسجيل الأداء هنا (ولكن فقط العرض التقديمي هنا ).


عرض Podman في All Systems Go! 2018

ملاحظات فنية


أحدث إصدار من Podman هو v0.10.1.3 (بتاريخ 18 أكتوبر) ، وأحدث الميزات الجديدة هو v0.10.1 (12 أكتوبر) ، والذي تضمن العديد من الفرق الجديدة والأعلام الإضافية.

كود Podman مكتوب في Go ويتم توزيعه بموجب ترخيص Apache المجاني 2.0. تتوفر الحزم الجاهزة للتثبيت للإصدار 27 من Fedora والإصدارات الأحدث (هناك أيضًا دليل تثبيت لـ Ubuntu). من بين المكونات التابعة لعمل Podman هي الأدوات المساعدة لحاويات Linux مثل runc و conmon ، بالإضافة إلى المكونات الإضافية لشبكة CNI .

كل من بدء الحاوية مع Podman ثم العمل معها يشبهان سيناريو استخدام docker المعتاد:

 $ sudo podman run -dt -e HTTPD_VAR_RUN=/var/run/httpd -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d \ -e HTTPD_MAIN_CONF_PATH=/etc/httpd/conf \ -e HTTPD_CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/httpd/ \ registry.fedoraproject.org/f27/httpd /usr/bin/run-httpd $ sudo podman ps ... $ sudo podman inspect -l ... $ sudo podman logs --latest 10.88.0.1 - - [07/Feb/2018:15:22:11 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-" 10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-" 10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-" 10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-" 10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-" $ sudo podman top <container_id> UID PID PPID C STIME TTY TIME CMD 0 31873 31863 0 09:21 ? 00:00:00 nginx: master process nginx -g daemon off; 101 31889 31873 0 09:21 ? 00:00:00 nginx: worker process 

للحصول على مقدمة عملية عن Podman ، يمكنك أيضًا استخدام نص Katacoda عبر الإنترنت المناسب: " حاويات بدون عامل إرساء - إطلاق حاويات باستخدام Podman و Libpod ."

أخيرًا ، يستحق مشروع pypodman ، الذي هو قيد التطوير النشط ويقدم واجهة مكتوبة بواسطة Python للتنفيذ عن بُعد لأوامر Podman ، ذكرًا خاصًا.

ليس فقط Podman: libpod والنظام البيئي


جنبا إلى جنب مع بودمان ، ذكر المقال مرارا مشروع libpod. ما الفرق؟

إذا تحدثنا عن مشروع Red Hat "الكامل" ، فإنه يُطلق عليه اسم libpod بالفعل ويتم استضافته على GitHub بهذا الاسم. اليوم ، يتم وضع libpod على أنه "مكتبة للتطبيقات التي تحتاج إلى العمل مع مفهوم المداخن الحاوية ، التي يشتهر بها Kubernetes." و Podman نفسها هي أداة تشكل جزءًا من مكتبة libpod.

إذا عدنا إلى عرض أوسع للحاويات ، فإن Red Hat لها رؤيتها الخاصة ، والتي تأتي في الحياة مع مجموعة كاملة من المرافق لجميع المناسبات. يتركز معظمها في مستودعات تحمل الاسم الناطق github.com/containers ، وهذا يوضح وحده الطموحات الواضحة للشركة (بالمناسبة ، كانت بعض هذه المشاريع موجودة في github.com/projectatomic ) .

يتم التعبير عن وجهات نظر Red Hat حول توحيد وتطوير النظام البيئي للحاويات مباشرة في README لمشروع libpod:



لقد كتبنا بالفعل عن كل هذه المشاريع تقريبًا (runc ، حاويات / صورة ، حاويات / تخزين ، CNI ، conmon) في مراجعة CRI-O ، ومع ذلك ، كانت إضافة مهمة منذ ذلك الحين أداة لبناء صور حاويات تسمى buildah . بالإضافة إلى ذلك ، لدى Red Hat بالفعل إجابات جاهزة لبعض الاحتياجات الأخرى لعالم الحاويات الحديثة ، مثل udica لإنشاء ملفات تعريف أمان SELinux و skopeo للعمل مع سجلات الصور عن بُعد.

تلخيص


تمامًا مثل Red Hat ليست فقط وراء منصة المؤسسة الخاصة بحاويات OpenShift ، ولكنها تلعب أيضًا دورًا نشطًا في حياة مشروع Open Source الأساسي Kubernetes الأساسي ، فإن الشركة الأمريكية تدرك وجهة نظرها حول البنية التحتية الحديثة لتكنولوجيا المعلومات على مستوى أكثر أساسية - الحاويات نفسها ، يهتم مهندسو DevOps و SRE بتنسيقها. Podman و libpod مكونان مهمان للنظام البيئي بأكمله الذي تقوم Red Hat ببنائه في عالم الحاويات ذات المعايير المفتوحة. إذا نظرت إلى ما يحدث ، فإن الصفقة مع IBM المذكورة في بداية المقالة ، والتي يتم تقديمها كمبادرة لتشكيل مزود رائد للحلول في مجال السحب الهجينة ، تبدو أكثر إثارة للاهتمام عبر الصناعة بأكملها ...

أخيرًا ، أقترح مسحًا صغيرًا حول معرفة قراء Habra حول مشروع Podman قبل ظهور هذه المقالة. شكرا لك على المشاركة!

ملاحظة


اقرأ أيضا في مدونتنا:

Source: https://habr.com/ru/post/ar426141/


All Articles