ما الفرق بين صور Docker وحاوياتها؟
صور Docker وحاوياتها هي تقنيات من تقنيات نشر التطبيقات. لتشغيل أي تطبيق، كان عليك عادةً تثبيت الإصدار الذي يطابق نظام تشغيل جهازك. ومع ذلك، يُمكنك الآن إنشاء حزمة برمجيات واحدة أو حاوية واحدة تعمل على جميع أنواع الأجهزة وجميع أنظمة التشغيل. Docker هي منصة برمجية تُجمّع البرامج في حاويات. صور Docker هي قوالب للقراءة فقط تحتوي على تعليمات لإنشاء حاوية. صورة Docker هي نسخة احتياطية أو مُخطط للمكتبات والتبعيات المطلوبة داخل الحاوية لتشغيل التطبيق.
لماذا تُستخدم صور Docker وحاوياتها؟
تسمح الحاويات للمطورين بتجميع البرامج لتشغيلها على أي نظام مستهدف. في السابق، كان عليك تجميع البرامج بطريق خاصة تختلف باختلاف الأنظمة المستهدفة. على سبيل المثال، إذا كنت تريد تشغيل تطبيق على macOS وWindows، فعليك تغيير تصميم التطبيق وتجميعه للأنظمة المختلفة.
يتيح "الوضع في حاوية" للتطبيق البرمجي العمل على هيئة خدمات مًصغّرة على بنيات الأجهزة الموزعة عبر المنصات. نظرًا لأن الحاويات تتميز بدرجة عالية من القابلية للنقل، فإن التطبيقات البرمجية هذه تعمل على أي جهاز تقريبًا مع النشر السريع. على سبيل المثال، قد يحتوي تطبيق مؤسسة على المئات من الخدمات المُصغّرة. يمكن تشغيلها كحاويات عبر أجهزة متعددة وأجهزة افتراضية (VMs) في مركز بيانات مخصص وفي السحابة.
آلية العمل: صور Docker مقابل حاويات Docker
Docker عبارة عن منصة حاويات يُمكنك استخدامها في تجميع البرامج في حاويات وتشغيلها على الأجهزة المستهدفة. تعمل حاويات Docker على أي جهاز وأي جهاز افتراضي مثبت عليه المحرك Docker. وهي تعمل بدون معرفة بنية النظام الأساسية. لا يعمل المحرك Docker إلا على نظام التشغيل Linux فقط. حاوية Docker هي حاوية أعدتها منصة الحاويات Docker؛ توجد أيضًا منصات حاويات أخرى ولكنها أقل شيوعًا.
اقرأ حول التخزين في الحاويات »
آلية عمل حاويات Docker
حاوية Docker هي بيئة وقت تشغيل تحتوي على جميع المكونات الضرورية -مثل التعليمات البرمجية والتبعيات والمكتبات- اللازمة لتشغيل التعليمة البرمجية للتطبيقات بدون استخدام تبعيات الجهاز المضيف. يقوم وقت تشغيل الحاوية بالعمل على المحرك على خادم أو جهاز أو مثيل سحابي. يقوم المحرك بتشغيل عدة حاويات اعتمادًا على الموارد الأساسية المتاحة.
لنشر مجموعة حاويات وتوسعة نطاقها للتواصل بفعالية عبر الأجهزة المختلفة أو الأجهزة الافتراضية، تحتاج إلى منصة تنسيق حاويات مثل Kubernetes. يساعد ذلك في ما إذا كانت أجهزتك موجودةً محليًا في مقر العمل أو في السحابة. تدير Kubernetes أجهزةً متعددةً يُطلق عليها "مجموعة"، في سياق عمليات الحاويات.
آلية عمل صور Docker
صورة Docker، أو صورة الحاوية، هي ملف مستقل قابل للتنفيذ يُستخدم في إنشاء حاوية. تحتوي صورة الحاوية هذه على جميع المكتبات والتبعيات والملفات التي تحتاج الحاوية إلى تشغيلها. صورة Docker هي صورة قابلة للمشاركة وقابلة للنقل، ولذا يُمكنك نشر نفس الصورة في مواقع متعددة في وقت واحد؛ تمامًا مثل الملف الثنائي للبرنامج.
يُمكنك تخزين الصور في سجلات لتتبع البنيات البرمجية المعقدة، والمشروعات، وقطاعات الأعمال، والوصول إلى مجموعة المستخدمين. على سبيل المثال، يحتوي السجل العام Docker Hub على صور مثل أنظمة التشغيل، وأطر لغات البرمجة، وقواعد البيانات، وأدوات تحرير التعليمات البرمجية.
الأوامر الأساسية: صور Docker مقابل حاويات Docker
يُمكنك استخدام الأوامر ذات المَعْلمات في معالجة حاويات Docker. تنسيق الأمر القياسي هو docker [options] [command] [arguments].
أوامر الحاوية
يحتوي الجدول التالي على أوامر الحاوية المستخدمة بشكل متكرر. تحتوي وثائق Docker على أوامر أخرى كثيرة.
الأمر |
الشرح |
docker ps -a |
يسرد جميع الحاويات. العلامة -a تُظهر كلًا من الحاويات قيد التشغيل والحاويات التي ليست قيد التشغيل. لإظهار الحاويات قيد التشغيل فقط، يُمكن حذف هذه العلامة. |
docker rename [container] [new_name] |
يعيد تسمية الحاوية المحددة إلى new_name. |
docker start [container] |
يُشغّل الحاوية المحددة. |
docker stop [container] |
يوقف الحاوية المحددة. |
docker wait [container] |
يضع الحاوية المعينة قيد الانتظار إلى حين إيقاف الحاويات الأخرى التي قيد التشغيل. |
أوامر الصورة
يوجد عدد أقل من أوامر الصورة مقارنةً بأوامر الحاوية.
Docker build -t image_name . |
يُنشئ صورة Docker بالاسم image_name من الملفات الموجودة في الدليل الحالي. |
docker create [image] |
يُنشئ حاويةً ليست قيد التشغيل من الصورة المحددة. |
docker run [image] |
يقوم بإنشاء حاوية وتشغيلها استنادًا إلى الصورة المحددة. |
إنشاء حاويات Docker من صور Docker
لإنشاء حاوية من صورة Docker معينة، قم بتشغيل المحرك على الجهاز. ثم استخدم أمر التشغيل الأساسي Docker run.
فيما يلي مثال للأمر:
docker run -it MyImage bash
يقوم هذا الأمر بإنشاء حاوية من ملف صورة بالاسم MyImage. يقوم -it بإنشاء طرف وهمي داخل الحاوية قيد التشغيل. وعن طريق تحديد bash كأمر، يفتح الطرف bash داخل الحاوية.
الاختلافات الرئيسية: صور Docker مقابل حاويات Docker
حاوية Docker هي تطبيق برمجي أو خدمة برمجية قائمة بذاتها وقابلة للتشغيل. من ناحية أخرى، فإن صورة Docker هي القالب المُحمَّل على الحاوية لتشغيله، مثل مجموعة من التعليمات.
يُمكنك تخزين الصور لمشاركتها وإعادة استخدامها، ولكن يُمكنك إنشاء حاويات وتدميرها طوال دورة حياة التطبيق. نعرض فيما بعد اختلافات أخرى.
المصدر
يُمكنك إنشاء صورة Docker من ملف Dockerfile، وهو ملف نصي قابل للقراءة بواسطة العنصر البشري ويشبه ملف التكوين. يحتوي Dockerfile على جميع التعليمات لإنشاء الصورة. يجب عليك وضع Dockerfile مع جميع المكتبات والتبعيات المرتبطة في مجلد لإنشاء الصورة.
في المقابل، يُمكنك إنشاء حاويات Docker مباشرةً من ملف صورة Docker.
التكوين
يتكون ملف صورة Docker من طبقات صور للحفاظ على حجم الملف صغيرًا. كل طبقة تمثل تغييرًا تم إجراؤه على الصورة. الطبقات هي طبقات للقراءة فقط ويمكن مشاركتها بين حاويات متعددة.
تحتوي حاوية Docker، باعتبارها مثيلًا للصورة، أيضًا على طبقات. ومع ذلك، تحتوي في المقدمة على طبقة إضافية قابلة للكتابة يُطلق عليها طبقة الحاوية. تسمح طبقة الحاوية بالوصول للقراءة والكتابة. وأيضًا تتيح عزل أي تغييرات يتم إجراؤها داخل الحاوية عن الحاويات الأخرى المستندة إلى نفس الصورة.
القابلية للتغيير
صور Docker غير قابلة للتغيير، ما يعني أنه لا يمكن تعديلها بعد إنشائها. في حالة الحاجة إلى إجراء تغييرات على صورة، يجب إنشاء صورة جديدة تتضمن التعديلات المطلوبة.
في المقابل، الحاويات قابلة للتغيير وتسمح بالتعديلات أثناء وقت التشغيل. التغييرات التي تحدث داخل الحاوية يتم عزلها إلى تلك الحاوية المحددة ولا تؤثر على الصورة المرتبطة بها. من أمثلة التغييرات قيامك بكتابة ملفات جديدة، أو تثبيت برنامج، أو تعديل التكوينات.
حالات الاستخدام: صور Docker مقابل حاويات Docker
يُمكنك الجمع بين استخدام صور Docker وحاوياتها عند إنشاء البرامج ونشرها.
يُمكنك استخدام الحاويات في بناء التطبيقات مرةً واحدةً وتشغيلها في أي مكان. يُمكنك بدء تشغيل الحاويات وإيقافها وإعادة تشغيلها بسرعة حسب الحاجة. لذلك، من السهل التوسّع في النطاق أو تقليصه بناءً على طلب التطبيق.
ومع ذلك، تكون الإدارة أسهل عند استخدام كل من الصور والحاويات. على سبيل المثال، إليك كيفية استخدامها معًا:
- قم بتوسعة نطاق التطبيق أفقيًا عن طريق تشغيل مثيلات متعددة من الحاويات استنادًا إلى نفس الصورة.
- قم بأتمتة مسارات التكامل المستمر والنشر المستمر (CI/CD) باستخدام صور مختلفة لبيئات التطوير والاختبار والإنتاج.
- قم بتسمية الإصدارات المختلفة من صورك وإدارتها. يساعدك هذا في استعادة إصدارات محددة أو نشرها حسب الحاجة.
ملخص الاختلافات: صور Docker مقابل حاويات Docker
صورة Docker |
حاوية Docker |
|
ما التعريف؟ |
ملف قابل لإعادة الاستخدام وقابل للمشاركة يُستخدم في إنشاء حاويات. |
مثيل وقت تشغيل؛ برنامج قائم بذاته. |
الإنشاء من |
تعليمة برمجية، وتبعيات ومكتبات، وملف Dockerfile. |
صورة. |
التكوين |
طبقات للقراءة فقط. |
طبقات للقراءة فقط مع طبقة إضافية للقراءة والكتابة في المقدمة. |
القابلية للتغيير |
غير قابلة للتغيير. إذا كانت هناك تغيرات، يجب عليك إنشاء ملف جديد. |
قابلة للتغيير؛ يُمكنك تغييرها في وقت التشغيل حسب المطلوب. |
حالات الاستخدام |
تخزين تفاصيل تكوين التطبيق في قالب. |
تشغيل التطبيق. |
كيف تساعدك AWS في تلبية متطلبات الصور والحاويات؟
تقدم Amazon Web Services (AWS) الكثيرة من العروض التي تمنحك مكانًا آمنًا لتخزين صور الحاوية وإدارتها.
إننا نقدم التنسيق الذي يدير متى وأين يتم تشغيل الحاويات ومحركات الحوسبة المرنة التي تعمل على تشغيل حاوياتك. تستطيع AWS المساعدة في إدارة حاوياتك وعمليات نشرها نيابةً عنك، وبالتالي لا داعي للقلق بشأن البنية التحتية الأساسية. لمزيد من المعلومات، انتقل إلى الحاويات على AWS.
Amazon Elastic Container Registry (Amazon ECR) هو سجل حاويات مُدار بالكامل يقدم استضافةً عالية الأداء. ولذلك، يمكنك نشر صور التطبيق وعناصره في أي مكان بطريقة موثوقة. يُمكن للمطورين الذين ينشئون تطبيقاتٍ قائمةَ على الحاويات الآن اكتشاف صور Docker الرسمية وتنزيلها مباشرةً من Amazon ECR Public.
Amazon Elastic Container Service (Amazon ECS) هي خدمة مُدارة بالكامل تختص بتنسيق الحاويات. هذه الخدمة تُسهّل عليك نشر تطبيقات الحاويات وإدارتها وتوسعة نطاقها. تستخدم Amazon ECS صور Docker في تعريفات المهام لتشغيل الحاويات.
ابدأ استخدام Docker على AWS من خلال إنشاء حساب اليوم.