محتويات الدورة

DevOps / المتوسط: أنظمة تسليم مضبوطة / الدرس 7

صور الحاويات وحدود التشغيل

ميز بناء الصورة من العمليات العاملة وافهم العزل والبيانات القابلة للكتابة والهوية وحدود الموارد.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • ميز بيانات الصورة من سلوك التشغيل.
  • راجع الهوية والشبكة واستمرار البيانات.
  • اشرح افتراضات الصحة والإنهاء المنضبط.

الصورة ليست خدمة عاملة

تجمع الصورة نظام ملفات وبيانات تنفيذ، وتضيف الحاوية العاملة عملية وإعدادا ونطاقات أسماء وتركيبات وسياسة موارد. تشترك الحاويات عادة في نواة المضيف ولا تطابق الآلات الافتراضية أو العزل الأمني الكامل. قد تنجح الصورة في البناء وتفشل في البدء أو الاتصال أو الخدمة. سجل هويتها وإعداد التشغيل منفصلين. تستخدم الدورة مفاهيم Dockerfile وافتراض حاويات Linux، ويعتمد السلوك والخيارات على إصدار المحرك المختار.

بناء سياق ضيق

يحتوي سياق البناء ملفات يستطيع الباني الوصول إليها. استبعد بيانات المستودع والأسرار والمخازن والنواتج غير اللازمة عبر .dockerignore مراجعة. يعرض المثال الأول Dockerfile لمشروع يوفر app.py، وهو غير قابل للتشغيل هنا لغياب التطبيق وخروج جلب الصورة عن الدرس. الوسم المرقم مقروء لكنه متحرك، فتختار سياسة الإصدار بصمة مراجعة وتحدثها عمدا. انسخ المطلوب وحدد مجلد العمل ولا تضع الاعتمادات في التعليمات أو الطبقات.

dockerfile Dockerfile توضيحي لحاوية Linux
FROM python:3.13-slim
WORKDIR /app
COPY app.py /app/app.py
USER 10001:10001
EXPOSE 8080
CMD ["python", "/app/app.py"]

يلزم أن يوفر المشروع app.py ووصولا مناسبا. تعلن EXPOSE النية فقط. الوسم المتحرك للتعليم لا سياسة بصمة إنتاج، ولا تُجلب صورة أو تُبنى.

فهم البدء والهوية

تتجنب صيغة التنفيذ طبقة shell غير لازمة وتوضح وصول الإشارات. يظل التطبيق مسؤولا عن الإنهاء وتحرير الموارد. استخدم هوية غير الجذر حيث تلائم الوصول وبأقل أذونات. EXPOSE بيانات للصورة ولا ينشر منفذا أو يربط واجهة. يجب أن تستمع العملية إلى العنوان والمنفذ الموثقين وأن توفر المنصة ربط الشبكة. لا يثبت نجاح ربط محلي سياسة خدمة بعيدة.

إبعاد الحالة الدائمة عن الطبقات المؤقتة

ليست طبقة الكتابة نسخة احتياطية دائمة. حدد المؤقت والتخزين المستمر وكيفية استعادته باتساق. يفصل المثال الثاني افتراضات تشغيل اصطناعية بين مساحة مؤقتة وبيانات دائمة. قد يكشف تركيب مسار مضيف ملفاته ويتجاوز افتراضات الصورة؛ فراجعه كحد امتياز. تحتاج حدود الموارد إلى قياس لأن نفاد الذاكرة أو خنق المعالج قد يشبه عيب التطبيق. لا تزل كل الحدود لإخفاء العرض بل قارن الطلب بالعقد.

yaml سجل مراجعة تشغيل اصطناعي
identity: nonroot-application-user
listen: documented-container-interface:8080
scratch: ephemeral-and-size-bounded
application-data: managed-persistent-storage
shutdown: drain-before-termination
resources: measured-request-and-limit-policy

يفصل السجل المستقل عن المزود التغليف عن التزامات التشغيل. ليس بيان Compose أو Kubernetes ولا يركب مسار مضيف.

التحقق من الحزمة وعقد التشغيل

راجع المحتويات والتحديثات والبدء والصحة والإغلاق منفصلة. اختبر المعمارية والهوية المقصودتين في بيئة مؤقتة مصرح بها. سجل المصدر والمسح مع فهم أنه يكشف المعروف ولا يثبت السلامة. احتفظ بحزمة سابقة متوافقة ولا تستخدم latest المتحرك في سجل الإصدار. تحسن الحاوية اتساق التغليف عندما تتضح حدود الإعداد والبيانات والشبكة والوصول أيضا. لا تشغل الأمثلة محركا أو خدمة أو حاوية مضيف.

الأخطاء الشائعة وإصلاحها

لا تجعل EXPOSE المنفذ متاحا

لماذا يحدث؟
اختلطت البيانات بالربط وتعيين الشبكة.
كيف تصلحه؟
افحص الحدود في سياق التشغيل المختار.
كيف تتجنب تكراره؟
وثّق الربط ومنفذ الخدمة والتوجيه الخارجي منفصلة.

تختفي البيانات بعد الاستبدال

لماذا يحدث؟
كانت الحالة المهمة في طبقة مؤقتة فقط.
كيف تصلحه؟
استعد من تخزين أو نسخة متحقق منها وصحح التصميم.
كيف تتجنب تكراره؟
جرّب الاستبدال والاستعادة بحالة اصطناعية.

يقطع الإنهاء الطلبات

لماذا يحدث؟
لم يُختبر التعامل مع الإشارة والتصريف.
كيف تصلحه؟
استخدم مدخلا واضحا وإغلاقا منضبطا محدودا.
كيف تتجنب تكراره؟
أدرج الإغلاق ضمن قبول الحزمة.

اختبر فهمك

1. تعلن Dockerfile المنفذ 8080 لكن التطبيق يستمع إلى عنوان الحاوية الداخلي فقط. ما الناقص؟

اعرض الحل المشروح

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

2. لماذا يُستبعد ملف اعتماد محلي ولو لم تنسخه Dockerfile صراحة؟

اعرض الحل المشروح

يتاح السياق للباني وقد تضمه COPY واسعة لاحقا أو أداة. قلل السياق واستخدم قناة أسرار مدعومة عند الحاجة. يقلل الاستبعاد التعرض ولا يستبدل تدوير الاعتماد بعد التسرب.

أهم ما تعلمته

  • تجمع الصورة نظام ملفات وبيانات تنفيذ، وتضيف الحاوية العاملة عملية وإعدادا ونطاقات أسماء وتركيبات وسياسة موارد.
  • تتجنب صيغة التنفيذ طبقة shell غير لازمة وتوضح وصول الإشارات.
  • راجع المحتويات والتحديثات والبدء والصحة والإغلاق منفصلة.

المراجع الرسمية