تقل احتمالية أن تؤدي تحديثات التطبيقات المستضافة ذاتيًا إلى إنشاء ملفات مملوكة للمستخدم الجذر عندما يثبت النشر عقدًا رقميًا للمستخدم ويتحقق من ملكية وحدات التخزين قبل استبدال الحاوية.
تتمثل المهمة الوقائية في التوقف عن التعامل مع اسم المستخدم الداخلي للصورة باعتباره هوية تخزين ثابتة. سجّل معرّف المستخدم الفعلي (UID) ومعرّف المجموعة (GID) اللذين يكتبان البيانات الدائمة، واربطهما بأدلة المضيف أو وحدات التخزين المسماة، وحافظ على أي إعدادات PUID/PGID أو إعدادات مساحة أسماء المستخدمين، واختبر الصورة الجديدة على مسار صغير قابل للكتابة قبل طرحها بالكامل. وبهذه الطريقة، لا يمكن لتحديث الصورة تغيير المالك الرقمي للإعدادات أو الملفات المرفوعة أو قواعد البيانات أو البيانات الوصفية للوسائط بصمت.
سجّل معرّفي UID وGID الرقميين قبل التحديث
التقط مستخدم العملية قيد التشغيل، والمجموعة الأساسية، والمجموعات الإضافية، والملكية الرقمية لملفات نموذجية في كل وحدة تخزين قابلة للكتابة. احفظ ملخص الملكية هذا إلى جانب ملخص الصورة أو إصدارها.
تنص إرشادات بناء الصور في Docker على أن المعرّفات الصريحة تمنع اختلافات إعادة البناء، لأن مستخدمي الصور المعيّنين تلقائيًا قد يحصلون على معرّفات رقمية مختلفة بين عمليات إعادة البناء.
سجّل الأرقام، وليس الأسماء فقط مثل app أو media. فقد تعيد صورة جديدة استخدام اسم المستخدم نفسه مع تغيير معرّف UID الخاص به، بينما تخزّن ملفات المضيف الملكية الرقمية.
ثبّت مستخدم وقت التشغيل في عقد النشر
عندما تدعم الصورة التشغيل مباشرةً بحساب غير جذر، حدّد المستخدم والمجموعة المقصودين صراحةً في Compose أو إعدادات وقت التشغيل. وإذا كانت الصورة تتطلب مرحلة تهيئة بصلاحيات الجذر، فوثّق أي عملية لاحقة تكتب البيانات الدائمة فعليًا.
تحدّد مواصفة صور Open Container الحقل User كافتراضي لوقت التشغيل، ما يعني أن تغيير الصورة قد يغيّر هوية وقت التشغيل ما لم يتجاوزها النشر عمدًا أو يتحقق منها.
لا تفرض معرّف UID غير جذري عشوائيًا على الصور التي تتطلب نموذج تهيئة مدعومًا. يجب أن يتبع العقد التصميم الموثق للتطبيق، مع الحفاظ على إمكانية التنبؤ بمالك الملفات الدائمة الناتجة.
حافظ على توافق PUID وPGID مع ملكية المضيف
بالنسبة إلى الصور التي تعرض متغيرَي PUID وPGID، ثبّت القيم في إعدادات Compose أو البيئة الخاضعة للتحكم بالإصدارات، وتأكد من أن أدلة وحدات التخزين على المضيف مملوكة لحساب الخدمة المطابق.
توضح LinuxServer أن PUID يربط عمليات الكتابة داخل الحاوية بحيث تظل الملفات التي تُنشأ في وحدات التخزين المرتبطة قابلة للإدارة خارج الحاوية.
قبل التحديث، قارن المعرّفات المهيأة مع ناتج id على المضيف ومع ملكية الملفات الحالية. لا تنسخ قيمة نموذجية مثل 1000 بشكل أعمى إلى خادم يكون فيه هذا المعرّف مملوكًا لشخص أو خدمة أخرى.
ضع في الحسبان مساحات أسماء المستخدمين والربط في الوضع عديم الجذر
قد يجعل Docker أو Podman في الوضع عديم الجذر العملية تبدو كأنها تعمل بصلاحيات الجذر داخل الحاوية، بينما تُربط بمعرّف UID غير جذري على المضيف. سجّل وضع مساحة الأسماء وإعدادات UID/GID الفرعية قبل تفسير تغيّرات الملكية.
توضح خيارات وقت التشغيل في Podman أن keep-id يحافظ على ربط المستخدم عندما تحتاج الحاوية إلى وصول متوقع إلى الملفات المركبة من المضيف.
لا تحاول «إصلاح» مالك يبدو كأنه الجذر داخل الحاوية قبل فحص المعرّف الرقمي على جانب المضيف. فالجذر ضمن مساحة أسماء والجذر على المضيف لا يمثلان الهوية نفسها دائمًا.
اختبر الصورة الجديدة مسبقًا على وحدة تخزين تجريبية
قبل استبدال حاوية الإنتاج، شغّل الصورة الجديدة باستخدام UID/GID المقصودين ودليل مؤقت يحاكي أذونات الإنتاج. دع تهيئة بدء التشغيل تنشئ ملفًا ودليلًا واحدًا، ثم افحص ملكيتهما على جانب المضيف.
يوضح دليل Red Hat لتصحيح أخطاء وحدات التخزين عديمة الجذر أن ملكية المضيف تتبع ربط UID، وليس اسم المستخدم الظاهر داخل الحاوية وحده دليلًا كافيًا.
إذا أنشأ الاختبار ملفات غير متوقعة مملوكة للجذر أو ملفات معاد ربطها، فأوقف الطرح وقارن مستخدم الصورة ونقطة الدخول ومساحة الأسماء وإعدادات وحدات التخزين. فهذا أكثر أمانًا بكثير من اكتشاف التغيير بعد أن تلمس عملية ترحيل متكررة عند بدء التشغيل شجرة صور أو قاعدة بيانات كاملة.
تحقق من المجموعات الإضافية والمسارات القابلة للكتابة
تحتاج بعض التطبيقات إلى UID أساسي للخدمة، إضافةً إلى الوصول من خلال مجموعة مشتركة للوسائط أو التنزيلات أو الأجهزة. سجّل معرّفات تلك المجموعات واختبر جميع المسارات القابلة للكتابة، وليس دليل الإعدادات وحده.
يستخدم Kubernetes عناصر تحكم صريحة مثل runAsUser وrunAsGroup، ما يوضح مبدأ ملكية Linux نفسه حتى خارج عملية نشر Docker Compose البسيطة.
تكتمل سياسة التحديث عندما تنشئ الصورة الجديدة ملفات بالملكية المتوقعة على المضيف عبر كل مسار دائم، وتنجح بعد إعادة إنشاء الحاوية مرة واحدة. وتوفر مقالة ZimaSpace ذات الصلة حول الملفات المملوكة للجذر بعد تحديثات الصور مسار الاسترداد إذا كان الطرح قد أنشأ بالفعل بيانات مملوكة للجذر.
الدعم والنصائح
المزيد للقراءة

هل يمكن لـ Plex مشاركة وحدة معالجة الرسومات (GPU) مع حاوية Docker أخرى؟
يمكن لـ Plex وحاوية أخرى غالبًا الوصول إلى وحدة معالجة الرسومات نفسها، لكن يجب اختبار دعم برنامج التشغيل، وتعيين الجهاز، وحِمل محرّك الفيديو، والذاكرة،...

كيفية معرفة ما إذا كان خطأ Plex ناتجًا عن العميل أم الخادم
أعِد إنتاج العنصر نفسه على عميل آخر، وقارن مسار الجلسة، ثم اجمع أدلة من الخادم فقط بعد أن يحدد النطاق موضع الفشل الفعلي.

كيفية إعداد ذاكرة التخزين المؤقت وموقع التخزين المؤقت لتحويل الترميز في Plex
احمِ حالة Plex الدائمة مع وضع الملفات المؤقتة للتحويل على مساحة تخزين محلية مناسبة، ثم تحقّق من التنظيف والمساحة الحرة وسلوك إعادة التشغيل.

