Docker / أسس الصور والحاويات / الدرس 5
طبقات الكتابة وتركيبات الربط ووحدات التخزين
ضع الحالة عن قصد وافهم إخفاء التركيب للملفات وتغييره افتراضات الملكية.
في هذه الصفحة
أهداف الدرس
- ميّز كتابة الحاوية المؤقتة وربط المضيف ووحدات التخزين المُدارة.
- افهم الرؤية والصلاحيات والنسخ والاستبدال.
يجب ألا يحدد استبدال الحاوية احتفاظ البيانات
تنتمي طبقة الكتابة إلى الحاوية وتستبدل معها، فلا تلائم وحدها السجلات الدائمة. لوحدة التخزين المسماة دورة مستقلة ويمكن وصلها بحاوية بديلة. يشير الربط إلى مسار معين على مضيف المحرك. لا تنشئ أي آلية نسخة احتياطية ولا تضمن سلامة تنسيق البيانات بين كتّاب متزامنين.
تسمي الوحدة تخزيناً دائماً مُداراً
يعلن المثال وحدة مسماة عند /data. لا يكتب parcel-api الحالي فيها؛ فيشرح الموضع والملكية لتوسعة لاحقة دون ادعاء إنشاء بيانات. قد يختلف الاسم الفعلي المقيد بالمشروع عن المفتاح. افحص مصدر التركيب قبل الاحتفاظ أو التعافي ولا تحذف وحدة بسبب استبدال الحاوية.
services:
api:
image: parcel-api:lab
volumes:
- parcel-state:/data
volumes:
parcel-state: {}
نموذج Compose أدنى كامل يفترض وجود الصورة السابقة. ينفصل /data عن /app/app.py. وجود الوحدة ومحتواها وملكيتها حقائق تشغيل؛ ولا ندعي قاعدة أو نسخة أو كتابة ناجحة. تظل أوامر دورة الحياة غير منفذة.
يكشف الربط مساراً على المضيف
يناسب الربط مشاركة محلية مقصودة مثل ملف مصدر للقراءة فقط. يفسر المحرك المسار وقد يكون بعيداً عن العميل. يخفي التركيب فوق مسار صورة الملفات الأصلية أثناءه؛ لذا قد يجعل الخطأ أو مجلد فارغ صورة صحيحة تبدو معطلة. يقيد وضع القراءة الكتابة عبر الربط ولا يثبت الثقة بالمحتوى.
services:
api:
image: parcel-api:lab
volumes:
- type: bind
source: ./app.py
target: /app/app.py
read_only: true
يستبدل app.py على المضيف الملف الظاهر عند الهدف. يغير تعديله المحتوى المركب دون بناء، فيفيد التطوير ويضعف ثبات الإصدار في الإنتاج. تحقق من حسم المصدر وأنه ملف عادي قبل الاستخدام.
تتبع الصلاحيات الهوية الرقمية والخرائط
تعمل الصورة بالهوية 10001 والمجموعة 10001. يجب أن يسمح المجلد المركب لهذه الهوية أو خريطتها على المضيف بالعملية المطلوبة. تؤثر COPY --chown في ملفات الصورة لا مجلد مضيف مركب. لا تحل فشل الكتابة بصلاحيات عامة أو حاوية privileged؛ حدد المالك والنمط والتوسيم والتهيئة المعتمدة.
الدوام وقابلية التعافي مختلفان
قد يحفظ المسار الدائم بيانات تالفة أو محذوفة عن خطأ. يحتاج النسخ إلى اتساق التطبيق واحتفاظ وتخزين محمي وفحص استعادة. قد ينتج نسخ ملفات قاعدة حية دون طريقتها المدعومة أرشيفاً غير صالح. وثق المسارات الأصلية والمؤقتة والقابلة للتوليد وأدرج الملكية وتوافق الإصدار في خطة الاستعادة.
الأخطاء الشائعة وإصلاحها
Permission denied writing /data.
- لماذا يحدث؟
- لا تملك هوية التشغيل وصولاً للمسار أو توسيمه.
- كيف تصلحه؟
- افحص الملكية والخريطة والنمط والسياسة قبل تصحيح محدود.
- كيف تتجنب تكراره؟
- حدد ملكية مجلد البيانات ضمن عقد النشر.
تختفي ملفات الصورة بعد تركيب مجلد.
- لماذا يحدث؟
- يحجب التركيب محتوى الصورة عند الهدف.
- كيف تصلحه؟
- استخدم الهدف الضيق المقصود وتحقق من المصدر.
- كيف تتجنب تكراره؟
- راجع كل تركيب مقابل الملفات ومسارات البدء.
تختفي الحالة بعد الاستبدال.
- لماذا يحدث؟
- كُتبت البيانات الدائمة في طبقة الحاوية القديمة فقط.
- كيف تصلحه؟
- استعد بإجراء الحادثة وانقل الحالة المقبلة لتخزين مخطط.
- كيف تتجنب تكراره؟
- افصل هوية العملية المؤقتة عن ملكية البيانات الدائمة.
اختبر فهمك
1. هل تصلح COPY --chown=10001:10001 صلاحيات /data المرتبط من المضيف؟
اعرض الحل المشروح
لا؛ تغير COPY الصورة أثناء البناء ويقدم الربط محتوى مضيف مختلفاً وقت التشغيل. افحص المصدر وخريطة الهوية؛ فتصحيح الملكية إجراء تهيئة أو إدارة تخزين مدروس لا إعادة بناء تخمينية.
2. ما التخزين المناسب لملف مصدر ولسجلات متولدة دائمة؟
اعرض الحل المشروح
يلائم ربط ضيق للقراءة تجاوز مصدر تطوير مقصوداً. وتحتاج السجلات تخزيناً مستقلاً وعقد نسخ احتياطي. يعتمد الاختيار على النقل والملكية والتعافي؛ فلا تجعل الوحدة وحدها السجلات متسقة أو قابلة للاستعادة.
أهم ما تعلمته
- رؤية التركيب والكتابة والاحتفاظ والنسخ قرارات مستقلة.
- احم البيانات بفهم الملكية لا توسيع الصلاحيات.