قبل التعرف على Docker، يجب أن تكون لدينا فكرة عن الآلات الافتراضية ولماذا يمكن استبدالها بـ Docker. يمكن تعريف الآلة الافتراضية على أنها المحاكاة الافتراضية أو المحاكاة الافتراضية لنظام الحاسوب الفعلي. غالبًا ما يشار إلى الآلات الافتراضية باسم الضيوف، بينما يشار إلى النظام الفعلي الذي تشغله باسم المضيف.
تتيح المحاكاة الافتراضية إمكانية إنشاء أجهزة افتراضية متعددة (VMs)، لكل منها نظام تشغيل وتطبيقات خاصة بها على جهاز فعلي واحد. تتطلب الأجهزة الافتراضية طبقة برمجية خفيفة الوزن تسمى Hypervisor للتنسيق بينها وبين الأجهزة المادية الأساسية. على الرغم من أن العديد من الأجهزة الافتراضية التي تعمل في وقت واحد تتحدث عن الكفاءة، إلا أنها تؤدي إلى أداء غير مستقر. سيكون لنظام التشغيل الضيف (OS) نواة خاصة به ومجموعة من المكتبات والتبعيات الخاصة به، والتي ستستخدم جزءًا كبيرًا من موارد النظام. وترتبط التطبيقات المثبتة على الأجهزة الافتراضية بالأجهزة الأساسية؛ ويتطلب نقل جهاز افتراضي إلى جهاز آخر تكوينات جديدة وأخطاء جديدة في التطبيقات وإعادة تثبيت البيئة بأكملها. كما يمكن أن تكون الآلة الافتراضية بطيئة في الإقلاع. يساعد مفهوم الحاويات على التغلب على العيوب المذكورة أعلاه. Docker هي واحدة من منصات الحاويات تلك.
Docker:
Docker هو برنامج مفتوح المصدر نشأ لتبسيط تطوير التطبيقات. وهي تندرج تحت فئة منتجات PAAS (النظام الأساسي كخدمة) التي تساعد على إنشاء بيئات افتراضية لتطوير التطبيقات ونشرها واختبارها باستخدام الحاويات. تشير الحاوية إلى حزمة برمجيات خفيفة الوزن ومستقلة وقابلة للتنفيذ تحتوي على جميع المكتبات وملفات التكوين والتبعيات وغيرها من المعلمات الضرورية لتشغيل التطبيق.
كيف يعمل Docker:
يلعب كل من Docker Engine و Docker Image و Docker Container دورًا مهمًا في هذه المرحلة.
محرك Docker Engine
محرك Docker Engine هو في المقام الأول تقنية خادم العميل التي تساعد على بناء وتشغيل الحاوية باستخدام مكونات Docker. عندما نشير إلى Docker، فإنه يعرّف محرك Docker Engine، والذي يتضمن البرنامج الخفي Docker، وواجهة REST API، وواجهة سطر الأوامر (CLI). تمكّن CLI المستخدمين من التفاعل مع البرنامج الخفي لـ Docker daemon من خلال واجهة برمجة تطبيقات Docker Engine. يتكون محرك Docker Engine من المهام وسير العمل المطلوب لتطوير التطبيقات ونشرها وتشغيلها باستخدام الحاويات. يقوم المحرك بإنشاء عملية برنامج خفي من جانب الخادم يستضيف الصور والحاويات والشبكات ووحدات التخزين.
تم تطوير محرك Docker Engine في البداية لأنظمة لينكس ولكن تم توفير تحديثات لاحقة للعمل أصلاً على نظام ويندوز المشار إليه باسم حاويات Docker Windows و MAC-OS.
صورة Docker
يمكن تعريف صورة Docker Image على أنها ملف غير قابل للتغيير (غير قابل للتغيير) يحتوي على التعليمات البرمجية المصدرية والمكتبات والتبعيات والأدوات والملفات الأخرى المطلوبة لتنفيذ التطبيق. وبسبب خاصية القراءة فقط، تسمى الصور المذكورة أيضًا لقطات. وهي تشكل للتطبيق المطور وبيئته الافتراضية في نقطة زمنية معينة. هذه الاعتمادية هي إحدى خصائص Docker المتاحة. وهذا يسمح لمطوري التطبيقات باختبار ونشر البرامج في ظروف آمنة وموحدة.
يمكن بدء تشغيل صور Docker في حاوية فقط. يمكننا استخدام تلك اللقطة كأساس لبناء حاوية. بعد إنشاء الحاوية، يمكننا تعديل الصور الثابتة لأنه يتم إضافة طبقة للكتابة. الحاوية التي تم إنشاؤها فوق الصور موجودة بشكل مستقل ولا يمكن تغييرها. عند بدء تشغيل الحاوية، فإنك تقوم بشكل أساسي بتصميم نسخة للقراءة والكتابة من صور Docker تلك في الحاوية.
يوفر Docker للمستخدمين ميزة إنشاء العديد من صور Docker من الصورة الأساسية. في كل مرة يتم فيها تغيير الحالة الأولية للصورة وحفظ الحالة المحدثة حديثًا، سيتم إنشاء قالب جديد بالإضافة إلى طبقة جديدة. لذا يمكن القول أن صور Docker تتكون من مجموعة من الطبقات؛ كل طبقة مختلفة عن سابقتها ولكنها مطورة أيضًا. تظهر طبقات الصور كملفات للقراءة فقط تضاف إليها طبقة حاوية بمجرد استخدامها لبدء بيئة افتراضية. تتصرف صور Docker كحاويات في وقت التشغيل.
يقوم الأمر-إنشاء صورة Docker image-بإنشاء صورة من ملف docker. تقوم العديد من العلامات الفرعية التي تبدأ بصورة Docker بتنفيذ الوظائف المطلوبة، ويمكن العثور عليها في الموقع المرجعي التقني لـ Docker.
حاوية دوكر
حاوية Docker عبارة عن بيئة افتراضية وقت التشغيل حيث يتم عزل التطبيقات من قبل المستخدمين عن النظام الأصلي. هذه الحاويات هي وحدات مدمجة وقابلة للشحن يمكن للمستخدمين بدء تشغيل التطبيقات فيها بسرعة وببساطة. بيئة الحوسبة موحدة وموجودة في الحاوية. وهذا يضمن أن التطبيق المطور يعمل في سيناريو مماثل ويسهل مشاركته مع المطورين الآخرين في الفريق.
تعتبر التكنولوجيا الكامنة وراء حاوية Docker Container فريدة من نوعها لأنها تركز في المقام الأول على متطلبات ومواصفات المطورين ومشغلي الأنظمة لفصل تبعيات التطبيق عن البنية التحتية. وتوفر الحاويات عزلة أقوى، مما يؤكد أنها لا تقاطع الحاويات الأخرى التي تعمل، حتى الخادم الذي يدعمها. تقول Docker أن هذه الحاويات “توفر أقوى قدرات عزل في الصناعة”. وهذا يضمن حماية جهازك أثناء تطوير التطبيق.
يقوم Docker بحزم وتشغيل الحاويات التي أنشأها المطورون وهذه التقنية متوفرة أعلى نظام التشغيل. يسمح لنا Docker بتضمين حاويات متعددة على نفس نظام التشغيل لأنه يستخدم عزل الموارد في نواة نظام التشغيل. تشترك جميع هذه الحاويات في خدمات نظام التشغيل الأساسي. وهذا يختلف عن الآلة الافتراضية التي تجمع نظام تشغيل كامل. نظرًا لأن صور Docker تحتوي على جميع التكوينات والتبعيات اللازمة لتنفيذ التعليمات البرمجية داخل الحاوية، فإن الحاويات التي تنتقل بين بيئات Docker المختلفة مع نظام التشغيل نفسه تعمل دون تعديلات.
ستعمل البرمجيات الحاوية التي تستخدم محرك Docker Engine بنفس الطريقة دائماً، بغض النظر عن البنية التحتية. تقوم الحاويات بعزل البرمجيات عن بيئتها وتضمن عملها بشكل موحد على الرغم من الاختلافات بين بيئات التطوير والتدريج وضمان الجودة على سبيل المثال. فيما يلي أنواع مختلفة من الحاويات التي حددتها Docker: قياسية: أساسي لإنشاء حاويات محمولة خفيفة الوزن: تشترك الحاويات في نواة نظام تشغيل الجهاز، وبالتالي، لا تتطلب نظام تشغيل مختلف لكل تطبيق، مما يتيح كفاءة أعلى للخادم ويقلل من تكاليف التشغيل آمن: التطبيقات أكثر أماناً في الحاويات، ويوفر Docker أقوى قدرات العزل الافتراضي في المجال
استخدامات Docker: يمكن استخدام Docker كنظام للتحكم في الإصدار لكامل تطوير تطبيقك ونظام التشغيل الخاص به عندما تريد توزيع/التعاون على نظام تشغيل تطبيقك مع فريق عندما يريد المطورون تشغيل التعليمات البرمجية الخاصة بهم على كمبيوتر محمول في نفس البيئة التي لديهم على الخادم الخاص بهم عندما يحتاج التطبيق إلى المرور بمراحل متعددة من التطوير والاختبار (Dev/Test/QAQA/rod)
راجع أيضًا:كيف يعمل Docker و Kubernetes معًا
الخلاصة:
بهذا، يمكننا أن نلخص أن حاوية Docker Container هي بديل للآلة الافتراضية لأن الحاويات تشغل مساحة أقل من الآلة الافتراضية (عادةً ما يكون حجم صور الحاوية عشرات الميجابايت)، ويمكنها التعامل مع المزيد من التطبيقات، وتتحمل تكاليف تشغيلية أقل للتطبيق. تقوم حاويات Docker Containers بتغليف التطبيقات مع تبعياتها وتكويناتها، مما يضمن أداءً متسقًا عبر بيئات مختلفة، من التطوير إلى الإنتاج. تعمل تقنية الحاويات هذه على تبسيط عمليات التطوير والنشر، مما يسهل على المطورين مشاركة التطبيقات واختبارها ونشرها بشكل موحد. يؤدي تبنّي حاويات Docker Containers إلى تطوير ونشر تطبيقات أكثر مرونة وفعالية من حيث التكلفة، مما يجعلها أداة حاسمة في هندسة البرمجيات الحديثة.
تقدم SPOTO تدريباً على شهادة Docker وKubernetes لمساعدة المحترفين على إتقان هذه التقنيات الأساسية والتقدم في حياتهم المهنية في مجال الحاويات والتنسيق