العودة إلى الدورة

الدرس 6: فهم صور وطبقات Docker

Docker من الصفر إلى الاحتراف: الدورة الشاملة لتغليف التطبيقات (Containerization) للمبتدئين

الدرس 6: فهم صور وطبقات Docker

الحاويات زائلة، لكن الصور هي المخططات التي تجعلها قابلة للاستنساخ. لنتعمق في كيفية بناء الصور.

ما هي صورة Docker؟

صورة Docker هي قالب للقراءة فقط يحتوي على تبعيات نظام التشغيل، والمكتبات، وكود التطبيق اللازم لتشغيل قطعة من البرامج. يتم بناء الصور من مجموعة من التعليمات المحددة في ملف Dockerfile.

نظام الملفات الطبقي

يتم بناء صور Docker باستخدام حزمة من الطبقات (layers) للقراءة فقط. كل تعليمة في Dockerfile تنشئ طبقة جديدة.

المبادئ الأساسية للطبقات:

  1. الثبات (Immutability): بمجرد إنشاء الطبقة، لا يمكن تغييرها.
  2. المشاركة: إذا كانت صور متعددة تستخدم نفس الطبقات الأساسية (مثل نفس إصدار Ubuntu)، فإنها تخزن تلك الطبقة الأساسية مرة واحدة فقط على القرص، مما يوفر المساحة.
  3. الكفاءة: عند تحديث صورة ما، يقوم Docker بنقل الطبقات الجديدة أو المتغيرة فقط، وليس الصورة بأكملها.

الحاويات كطبقات

عندما يتم تشغيل حاوية من صورة، يضيف Docker طبقة واحدة، رقيقة، قابلة للكتابة فوق طبقات الصورة. تسمى هذه طبقة الحاوية (Container Layer).

  • أي تغييرات تتم داخل الحاوية قيد التشغيل (كتابة السجلات، حفظ الملفات) تحدث في هذه الطبقة القابلة للكتابة.
  • عند حذف الحاوية، يتم تدمير هذه الطبقة القابلة للكتابة، مما يعني فقدان جميع التغييرات (ما لم يتم حفظها صراحة أو تخزينها في volumes، وهو ما سنغطيه لاحقاً).

سرد وفحص الصور

لرؤية جميع الصور المخزنة محلياً على جهازك:

bash docker images

للحصول على معلومات مفصلة حول صورة معينة، بما في ذلك تاريخها وطبقاتها:

bash docker inspect nginx

لرؤية التاريخ المفصل (الذي يوضح الأوامر التي بنت الطبقات):

bash docker history nginx

يعد فهم الطبقات الخطوة الأولى نحو تحسين صورك من أجل السرعة والحجم.