يدعم Docker على ZimaOS عمليات الربط bind بوضع القراءة فقط، لكن WebUI للتطبيقات المخصصة في ZimaOS، التي نوقشت في موضوع المجتمع هذا، لا تحافظ بشكل موثوق على خيارات مثل :ro أو :readonly عند تحرير تعيين وحدة تخزين. وهذا قيد في WebUI، وليس قيدًا في Docker نفسه.
يتمثل الحل البديل الذي اقترحه المجتمع في تصدير ملف YAML الخاص بـ Compose أو كتابته يدويًا، ثم إنشاء التطبيق باستخدام Docker Compose أو واجهة CLI. وأقرت IceWhale في ديسمبر 2025 بأن واجهات WebGUI المستقبلية قيد التصميم مع توفير خيارات تحرير أكثر. ولا يزال رد لاحق في 24 أغسطس 2026 يصف سلوك واجهة المستخدم المتعلق بالقراءة فقط بأنه لم يُحل، لذا ينبغي للمستخدمين الحاليين التحقق من ربط الحاوية الفعلي بدلًا من افتراض أن الواجهة حافظت على العلامة.
يدعم Docker عمليات الربط بوضع القراءة فقط
تدعم وثائق Docker الحالية حول عمليات الربط الخيارين ro وreadonly.
باستخدام الصيغة المختصرة -v الصيغة:
docker run -v /host/path:/container/path:ro IMAGE
يدعم Docker أيضًا للقراءة فقط كخيار في صيغة ربط bind الموثقة لديه. ومع ذلك، --mount:
docker run --mount type=bind,src=/host/path,dst=/container/path,readonly IMAGE
يمنع الربط بوضع القراءة فقط الحاوية من الكتابة عبر هذا الربط، مع السماح لها بقراءة ملفات المضيف.
ما الذي كانت تفعله WebUI في ZimaOS
أفاد المستخدم الأصلي بأنه عند تحرير وحدة تخزين في WebUI، لم تتعرف الواجهة على اللاحقة :ro العلامة. وقد وصف أحد أفراد المجتمع السلوك بمزيد من التفصيل: كانت الواجهة تعيد كتابة الربط وتحذف خيار القراءة فقط بصمت عند حفظ التطبيق أو إعادة فتحه.
هذا الفرق مهم. يستطيع محرك Docker الأساسي إنشاء ربط صحيح بوضع القراءة فقط، لكن حقل وحدات التخزين في الواجهة الرسومية قد لا يعرض جميع خيارات ربط Docker.
ما قالته IceWhale عن القيد
في 26 ديسمبر 2025، أوضح Zima-Jerry أن واجهات WebGUI المستقبلية ستوفر خيارات تحرير أكثر، وأن الواجهة كانت لا تزال قيد التصميم. وتلقى الموضوع لاحقًا ردًا في 24 أغسطس 2026 يصف غياب خيار القراءة فقط بأنه مصدر قلق أمني ويطلب موعدًا متوقعًا.
لا يتضمن الموضوع الأصلي تأكيدًا لاحقًا من IceWhale يفيد بإصلاح قيود واجهة المستخدم. لذلك، لا تفترض أن الحقل الحالي في WebUI آمن من أجل :ro إلى أن تتحقق من ربط الحاوية الفعلي.
استخدم Docker Compose للربط بوضع القراءة فقط
كان الحل البديل الذي اقترحه المجتمع هو تصدير YAML الخاص بـ Compose للتطبيق من ZimaOS، وتحرير التركيب، ثم إعادة إنشاء الحاوية باستخدام Docker Compose القياسي.
يدعم Docker Compose وضع وصول بوصفه الحقل الثالث في الصيغة المختصرة لوحدات التخزين:
services:
app:
image: your/image:latest
volumes:
- /DATA/example:/data:ro
توثّق المرجعية الحالية لملف Compose من Docker الرمز ro بوصفه وضع الوصول للقراءة فقط لوحدة تخزين مركّبة أو لمسار ربط.
سير عمل عملي في ZimaOS
- افتح إعدادات التطبيق المخصّص.
- صدّر YAML الخاص بـ Compose إذا كان إصدار ZimaOS الحالي لديك يوفر هذا الخيار.
- احفظ نسخة احتياطية قبل التحرير.
- أضف
:roإلى مسارات المضيف التي يجب ألا تعدّلها الحاوية إلا. - تحقق من صحة YAML.
- استخدم طرفية مخوّلة لتشغيل Docker Compose.
- تحقق من التركيب الناتج قبل الوثوق به مع الملفات الحساسة.
أمر Compose المعتاد هو:
docker compose up -d
شغّله من الدليل الذي يحتوي على ملف Compose، وافهم أن مشروع Compose المُدار يدويًا قد لا يتصرف بالطريقة نفسها تمامًا التي يتصرف بها تطبيق مُدار بالكامل من خلال واجهة ZimaOS.
تحقق من أن التركيب للقراءة فقط فعلًا
لا تعتمد فقط على YAML أو تسمية واجهة الويب. افحص الحاوية قيد التشغيل:
docker inspect CONTAINER_NAME
في Mounts في قسم، يوضح Docker ما إذا كان التركيب قابلًا للكتابة. يجب أن يُظهر تركيب الربط المُعدّ للقراءة فقط:
"RW": false
تستخدم وثائق Docker الرسمية طريقة الفحص هذه للتحقق من التركيبات للقراءة فقط.
اختبر حدود الوصول بعناية
يمكنك أيضًا الاختبار من داخل حاوية مؤقتة أو غير مهمة بمحاولة إنشاء ملف في المسار المركّب. يجب أن يرفض التركيب المُعدّ للقراءة فقط عملية الكتابة.
لا تختبر ذلك بالكتابة فوق ملف مهم. استخدم اسم ملف مؤقتًا غير ضار، واحذف أي ملفات اختبار من المضيف إذا نجحت الكتابة بشكل غير متوقع.
:ro و :readonly هما خياران في Docker، لكن الصيغة مهمة
يذكر العنوان الأصلي كِلا الخيارين :ro و :readonly. تقبل وثائق Docker الحالية لتركيب الربط كلا الاسمين في سياقات خيارات التركيب المناسبة. والصيغة المختصرة الأكثر استخدامًا في Compose هي:
/host/path:/container/path:ro
للمسارات الطويلة أو --mount الصيغة، للقراءة فقط تم توثيقه أيضًا. طابِق الخيار مع صيغة Docker التي تستخدمها فعليًا بدلًا من لصق لاحقة في حقل ZimaOS الذي يتوقع مسار الحاوية فقط.
الوحدة المركّبة للقراءة فقط تختلف عن نظام ملفات الحاوية للقراءة فقط
يحتوي Docker Compose أيضًا على خيار على مستوى الخدمة read_only الخيار. فهذا يجعل نظام ملفات الجذر الخاص بالحاوية للقراءة فقط. وليس ذلك مماثلًا لجعل نقطة تحميل ربط واحدة للقراءة فقط.
على سبيل المثال:
services:
app:
image: your/image:latest
read_only: true
استخدم ذلك فقط عندما يكون التطبيق مصممًا للعمل مع نظام ملفات جذر للقراءة فقط، وتكون المسارات القابلة للكتابة المطلوبة محمّلة بشكل منفصل.
تجنّب إعادة حفظ وحدة التخزين في واجهة تُسقط العلامة
اقترح ردّ من المجتمع التعامل مع WebUI في ZimaOS على أنها للكتابة فقط فعليًا فيما يتعلق بإعدادات وحدات التخزين، بعد إنشاء نقطة تحميل للقراءة فقط يدويًا. ويتمثل القلق في أن إعادة فتح التطبيق وحفظه عبر واجهة رسومية لا تفهم هذا الخيار قد تعيد كتابة نقطة التحميل من دون :ro.
قبل إجراء تغييرات لاحقة في الواجهة، صدّر إعدادات Compose الحالية وتحقّق من نقطة التحميل بعد ذلك.
لماذا يهم هذا أمنيًا
غالبًا ما تُستخدم نقاط التحميل للقراءة فقط لمنح التطبيق إمكانية الوصول إلى الإعدادات أو الوسائط أو الشهادات أو النسخ الاحتياطية أو بيانات المصدر، من دون منحه صلاحية تعديل تلك الملفات.
إذا غيّرت الواجهة نقطة تحميل من القراءة فقط إلى القراءة والكتابة بصمت، فستحصل الحاوية على صلاحية وصول إلى نظام ملفات المضيف أكبر مما قصده المسؤول. ولهذا السبب يُعدّ التحقّق باستخدام docker inspect يظل ذلك مهمًا إلى أن تعرض الواجهة نفسها الخيار بصورة موثوقة.
قائمة التحقق لنقاط تحميل Docker للقراءة فقط في ZimaOS
- تأكّد من أن التطبيق يحتاج فعلًا إلى صلاحية القراءة فقط.
- لا تفترض أن WebUI في ZimaOS يحافظ على
:ro. - صدّر ملف Compose أو أنشئه.
- استخدم
/host:/container:roلنقطة التحميل المقصودة. - ابدأ المشروع باستخدام Docker Compose القياسي.
- تحقّق من نقطة التحميل باستخدام
docker inspect. - تأكيد
RWهوfalse. - توخَّ الحذر عند إعادة فتح التطبيق أو إعادة حفظه في WebUI.
- احتفظ بنسخة من ملف Compose العامل لاستعادته عند الحاجة.
الأسئلة الشائعة حول نقاط تحميل Docker للقراءة فقط في ZimaOS
هل يدعم Docker في ZimaOS الخيار :ro؟
نعم، على مستوى محرك Docker وCompose. وتحدّد سلسلة المصدر القيد في طريقة تعامل WebUI في ZimaOS مع خيارات التحميل.
هل تأكد إصلاح مشكلة WebUI؟
ليس في سلسلة المصدر هذه. إذ ظلّ ردّ بتاريخ 24 أغسطس 2026 يصف سلوك واجهة المستخدم للقراءة فقط بأنه لم يُحل بعد.
ما أفضل حل بديل حاليًا؟
صدّر ملف Compose بصيغة YAML أو أنشئه، وأضف نقطة التحميل للقراءة فقط، ثم شغّل docker compose up -d، وتحقّق من الحاوية قيد التشغيل باستخدام docker inspect.
هل يُعدّ read_only على مستوى الخدمة مماثلًا لوحدة تخزين :ro؟
لا. على مستوى الخدمة، يُعدّ read_only: true يؤثر في نظام ملفات الجذر الخاص بالحاوية. يُعدّ :ro يؤثر volume في نقطة التحميل المحددة فقط.
لماذا يُعد فقدان :ro بصمت مشكلة أمنية؟
لأن الحاوية قد تحصل على صلاحية الكتابة إلى ملفات المضيف التي قصد المسؤول إتاحتها للقراءة فقط.
