كيفية إصلاح ربط Docker الذي يتحول فجأة إلى وضع القراءة فقط

إيفا وونغ هي كاتبة تقنية و ومهندسة هاوية في ZimaSpace. مهووسة بالتكنولوجيا مدى الحياة ولديها شغف بالمختبرات المنزلية والبرمجيات مفتوحة المصدر، تتخصص في تبسيط المفاهيم التقنية المعقدة إلى أدلة عملية وسهلة الفهم. تؤمن إيفا بأن الاستضافة الذاتية يجب أن تكون ممتعة وليست مخيفة. من خلال دروسها، تمكّن المجتمع من تبسيط إعدادات الأجهزة، بدءًا من بناء أول نظام تخزين شبكي NAS وحتى إتقان حاويات Docker.

يصبح تركيب الربط في Docker للقراءة فقط عندما يتلقى Docker مسارًا للقراءة فقط أو يتوقف نظام ملفات المضيف عن قبول عمليات الكتابة.

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

تأكد من المسار الذي هو للقراءة فقط

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

توضح حالة في منتدى Docker أن الربط الأب للقراءة فقط قد يمنع Docker من إنشاء نقطة تركيب متداخلة، لأن الدليل المطلوب لا يمكن إنشاؤه على نظام الملفات الأب للقراءة فقط.

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

تحقق من خيارات تركيب Docker الفعلية

افحص إعدادات الحاوية قيد التشغيل بدلًا من الاكتفاء بملف Compose الحالي. تأكد من المصدر والوجهة ووضع انتشار التركيب، وما إذا كان التركيب محددًا للقراءة فقط من خلال :ro أو الصيغة المطولة أو ملف تجاوز أو أداة نشر.

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

إذا كان التركيب للقراءة فقط عن قصد، فأزل هذا الخيار فقط عندما يحتاج التطبيق فعلًا إلى الكتابة. أعد إنشاء الحاوية بعد تغيير التعريف، لأن تعديل ملف Compose لا يغير تركيبًا موجودًا بأثر رجعي.

حدد ما إذا كان المضيف قد أعاد تركيب نظام الملفات للقراءة فقط

تحقق من جدول تركيبات المضيف وسجل النواة وسجل التخزين وحالة نظام الملفات بحثًا عن أخطاء الإدخال والإخراج، أو أعطال السجل، أو أخطاء المجموع الاختباري، أو عمليات إعادة ضبط الجهاز، أو إعادة تركيب وقائية. لا تفرض إعادة تركيب للقراءة والكتابة قبل فهم سبب تفعيل الحماية.

تصف حالة دعم في Unraid تعطل بيانات تطبيقات Docker بعد أن أصبح نظام الملفات للقراءة فقط، بما في ذلك أخطاء أثناء إنشاء أدلة Plex. ويشير هذا النمط إلى خلل في نظام ملفات المضيف بدلًا من إعداد صلاحيات الحاوية.

أوقف الحاويات المتأثرة واحتفظ بمعلومات التشخيص. أصلح القرص أو مجموعة التخزين أو الكابل أو نظام الملفات أو السجل عبر سير عمل الصيانة المدعوم من المنصة، ثم تأكد من سلامة مسار المضيف قبل السماح مجددًا لحاويات قواعد البيانات أو الوسائط بالكتابة.

-15% OFF

افحص التركيبات المتداخلة والمتداخلة جزئيًا

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

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

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

ميّز بين حالة القراءة فقط والصلاحيات وسياسة الأمان

قارن الخطأ الناتج عن اختبار الكتابة بمالك الدليل المصدر ووضعه وقوائم التحكم في الوصول ووسم SELinux وملف تعريف AppArmor ومعرّف مستخدم الحاوية. يُعد رفض الصلاحية وفشل نظام الملفات للقراءة فقط خطأين مختلفين ويتطلب كل منهما إصلاحًا مختلفًا.

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

إذا كانت الصلاحيات غير صحيحة، فصحح الملكية أو قوائم التحكم في الوصول على المضيف باستخدام معرّفي UID وGID المقصودين للحاوية. أما إذا كان نظام الملفات نفسه للقراءة فقط، فستفشل تغييرات الصلاحيات ولا ينبغي استخدامها بديلًا عن إصلاح نظام الملفات.

أعد تشغيل التطبيق فقط بعد نجاح اختبار الكتابة على المضيف

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

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

لا يكتمل الإصلاح إلا عندما يكون نظام ملفات المضيف سليمًا، ويكون تركيب Docker الفعلي قابلًا للقراءة والكتابة حسب التصميم، ويستطيع التطبيق تحديث ملفاته الدائمة، ولا تظهر أخطاء جديدة في الإدخال والإخراج أو نظام الملفات أثناء الاستخدام المستمر.

الدعم والنصائح

المزيد للقراءة

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.