Docker / أسس الصور والحاويات / الدرس 2
الصور والطبقات والوسوم وهوية المحتوى
تتبّع مرجع الصورة إلى محتواه وميّز تاريخ الصورة من بيانات التطبيق الدائمة.
في هذه الصفحة
أهداف الدرس
- اشرح الطبقات والبيانات الوصفية والوسوم والبصمات.
- فسر فحص الصورة دون اختلاق معرّفات أو أحجام ثابتة.
تسجل الطبقات تغيرات الملفات
يُجمع نظام ملفات الصورة من تغييرات مرتبة للقراءة فقط. تضيف COPY و RUN محتوى إلى طبقات، وتحدد تعليمات البيانات الوصفية بدء الحاوية. وتحصل الحاوية على طبقة كتابة مستقلة. يخفي حذف ملف بخطوة لاحقة ظهوره النهائي لكنه قد يبقي بايتاته في طبقة أقدم. فلا تنسخ سراً ثم تفترض أن حذفه لاحقاً يمحو كشفه.
الوسم اسم قابل للتحريك
يشير python:3.13-slim إلى مستودع ووسم لا بايتات دائمة. قد ينشر السجل محتوى جديداً بالوسم نفسه. تعرّف البصمة المحتوى تشفيرياً؛ وقد تشير بصمة فهرس متعدد المنصات إلى عدة بيانات وصفية خاصة بالمنصات. يسهل الوسم فهم القصد وتحدد البصمة الإصدار بدقة. سجل الغرض والهوية المحسومة في أدلة الإصدار.
docker image inspect python:3.13-slim
docker buildx imagetools inspect python:3.13-slim
يصف الفحص المحلي صورة متاحة في محرك مصرح، ويفحص imagetools بيانات السجل وقد يتصل به. تعتمد البصمات والمنصات على البيئة فلا نختلقها ولا ندعي التنفيذ. وقد يظل الوسم المحلي أقدم من وسم السجل الحالي.
اقرأ التاريخ كدليل بناء لا خزنة أسرار
يساعد تاريخ الصورة على فهم تسلسل التعليمات ومساهمات الطبقات التقريبية، لكنه ليس مصدر البناء كاملاً أو سجل تدقيق التطبيق. قد تكشف معاملات البناء ونصوص الأوامر مدخلات حساسة. يفيد صغر الصورة في النقل والصيانة لكنه لا يثبت الأمان. راجع أصل الأساس والحزم والصلاحيات والثغرات القابلة للوصول مع الحجم.
docker image history --no-trunc parcel-api:lab
docker image inspect parcel-api:lab --format '{{json .Config}}'
تستهدف القراءتان صورة تدريب موجودة. يوضح التاريخ الخطوات وتضم Config الأمر والمستخدم والمنافذ المعلنة. ولا تثبت تجاوزات إعداد حاوية موجودة. قد يكشف التاريخ الكامل معلومات حساسة، فشارك الحقول اللازمة بعد الحجب فقط.
إعادة البناء تختلف عن إعادة التشغيل
تعيد إعادة التشغيل تشغيل إعداد الحاوية الحالي ولا تبني الصورة أو تجلب وسمًا جديداً أو تطبق Dockerfile. ينتج البناء محتوى جديداً ويتطلب اعتماده استبدالاً مدروساً للحاوية. افصل مراجعة المصدر ومرجع الصورة ومعرّف الحاوية عند التشخيص؛ فقد توجد صورة جديدة صحيحة بينما تخدم حاوية قديمة المستخدمين.
الاحتفاظ قرار ملكية بيانات
تختلف دورة حياة طبقات الصور وذاكرة البناء وطبقة الحاوية ووحدات التخزين. الصورة غير المستخدمة ليست بالضرورة غير مطلوبة؛ فقد تكون إصدار تراجع أو دليل إصدار. قد يضر التنظيف الواسع مشروعات أخرى، فلا تجعله جواباً تشخيصياً تلقائياً. حدد المالك والميزانية وافحص الاستهلاك وأزل فقط ما راجعه الإجراء التشغيلي.
الأخطاء الشائعة وإصلاحها
pull access denied.
- لماذا يحدث؟
- قد يكون المستودع خاطئاً أو يحتاج مصادقة أو يتعذر الوصول إليه.
- كيف تصلحه؟
- تحقق من المستودع والهوية المسموحة قبل تغيير إعداد السجل.
- كيف تتجنب تكراره؟
- وثق السجلات الموثوقة ولا تخمّن صوراً متشابهة الأسماء.
يعطي الوسم نفسه بايتات مختلفة لاحقاً.
- لماذا يحدث؟
- الوسوم متغيرة وقد حدّث الناشر المحتوى.
- كيف تصلحه؟
- احسم بصمة معتمدة للإصدار مع سياسة تحديث.
- كيف تتجنب تكراره؟
- احفظ هوية الصورة مع المصدر وبيانات البناء.
تظل الأسرار المحذوفة قابلة للاسترجاع من طبقة سابقة.
- لماذا يحدث؟
- نُسخ السر إلى الصورة قبل حذفه في طبقة لاحقة.
- كيف تصلحه؟
- دوّر السر المكشوف وأعد البناء دون نسخه إلى الطبقات.
- كيف تتجنب تكراره؟
- استخدم تركيبات أسرار البناء واستبعد الملفات الحساسة من السياق.
اختبر فهمك
1. هل تعتمد إعادة تشغيل الحاوية وسم Python المنشور حديثاً؟
اعرض الحل المشروح
لا؛ تحتفظ الحاوية بهوية صورتها وإعدادها. يحسم التحديث المنضبط المحتوى المقصود ويبني التطبيق عند الحاجة ويستبدل الحاوية بعد الفحص. لا يجعل بقاء الاسم الودود الهوية القديمة والجديدة متساويتين.
2. لماذا تسجل المنصة مع بصمة الصورة؟
اعرض الحل المشروح
قد يحسم المرجع فهرساً متعدد المنصات يضم معماريات مختلفة. سجل هل تعرّف البصمة فهرساً أم بياناً منفرداً والمنصة المختارة. يفسر ذلك اختلاف التشغيل دون افتراض حصول كل جهاز على نظام ملفات خاص بمنصة واحدة.
أهم ما تعلمته
- استخدم الوسم للقصد المقروء والبصمة المعتمدة لهوية المحتوى.
- يجيب تاريخ الطبقات وحالة التشغيل عن سؤالين مختلفين.