Docker / أسس الصور والحاويات / الدرس 1
العمليات والعزل ونموذج Docker
ابن تصوراً دقيقاً قبل تفسير الأوامر أو الثقة بحدود العزل.
في هذه الصفحة
أهداف الدرس
- ميّز مسؤوليات الصورة والحاوية والمحرك والعميل والسجل.
- قارن حاويات Linux بالآلات الافتراضية وافحص الهوية بأمان.
الحاوية بيئة عملية معزولة
تشغّل حاوية Linux عمليات ضمن نطاقات أسماء ورؤية ملفات وضوابط موارد وقيود أمان مختارة. وهي تشارك نواة المضيف ولا تقلع نواة ضيف مستقلة كالآلة الافتراضية التقليدية. يسهل ذلك البدء والتوزيع، لكن ثغرة النواة أو الصلاحيات الزائدة قد تتجاوز افتراضات العزل. ويضع Docker Desktop عادة حاويات Linux داخل آلة افتراضية مُدارة على الأنظمة الأخرى.
اعرف من يستقبل الأمر
يرسل عميل docker طلبات API إلى محرك يحدده السياق والإعداد. ينشئ المحرك الحاويات ويشرف عليها ويحفظ الصور محلياً، ويوزع السجل البيانات والبيانات الوصفية. قد يتصل طرفي يبدو محلياً بمحرك بعيد؛ فلا يحدد فحص الصياغة وحده الجهاز المتأثر. لا تتصل الدورة بأي daemon؛ والأوامر أمثلة للمراجعة في مختبر مؤقت مصرح به مستقلاً.
docker context show
docker context inspect
تصف الأوامر السياق المختار وإعداد وجهته. تختلف الأسماء والمسارات فلا نختلق نتائج. يحدد السياق وجهة الأمر المحتملة ولا يثبت إمكان الوصول إليها أو عزلها أو السماح بالتجارب عليها.
الصورة ليست حاوية تعمل
تجمع الصورة طبقات ملفات غير قابلة للتغيير وإعداداً كالأمر الافتراضي. يضيف إنشاء الحاوية إعداد التشغيل وطبقة كتابة، ويطلق البدء العملية المحددة. تتشارك حاويات عدة الصورة مع حالة تشغيل مستقلة. تبقى الحاوية الموقوفة موجودة وتظل الصورة قالباً. ولا يثبت الاسم المعروف أو وسم الصورة أن التطبيق يعمل أو أنه سليم.
docker container inspect parcel-api
docker image inspect parcel-api:lab
يفحص الأول حاوية موجودة باسم parcel-api ويفحص الثاني مرجع صورة. تجيب المعرّفات والحالة والتركيبات والإعداد عن أسئلة مختلفة. يلزمان محركاً مصرحاً وكائنات موجودة؛ والغياب نتيجة تشخيص صحيحة لا سبب لإنشاء موارد عشوائياً.
استخدم تطبيق تدريب صغيراً وصريحاً
تصف الدروس اللاحقة parcel-api، خدمة HTTP اصطناعية تضم app.py و Dockerfile و compose.yaml اختيارياً في مجلد مختبر. تستمع على المنفذ 8080 داخل الحاوية ولا تحمل بيانات أو أسراراً حقيقية. Python لغة المثال فقط؛ والمقصود سلوك الحاويات. الوسوم المقروءة متغيرة، وتشرح الدروس المتقدمة تثبيت المدخلات والبصمات لإعادة إنتاج الإصدارات.
يحتاج العزل إلى نموذج تهديد صريح
لا تعادل هوية root داخل الحاوية دائماً root مطلقاً على المضيف، لكن المحرك الجذري والتركيبات الخطرة قد يمنحان نفوذاً كبيراً. يكشف تركيب مقبس Docker عمليات daemon قوية. ولا تعوض نطاقات الأسماء التحديث وأقل الصلاحيات وحدود الموارد وحماية الأسرار. حدد من يصل إلى المحرك قبل استخدام الحاويات لعزل مستأجرين غير موثوقين.
الأخطاء الشائعة وإصلاحها
Cannot connect to the Docker daemon.
- لماذا يحدث؟
- قد تكون الوجهة غير متاحة أو غير مقصودة؛ ولا يثبت ذلك خطأ Dockerfile.
- كيف تصلحه؟
- افحص السياق وراجع مالك البيئة المصرح قبل تغيير الخدمات.
- كيف تتجنب تكراره؟
- وثق ملكية الوجهة وافصل صلاحيات المختبر عن التشغيل.
No such container: parcel-api.
- لماذا يحدث؟
- خُلط مرجع الصورة باسم الحاوية أو كان الكائن في سياق آخر.
- كيف تصلحه؟
- أكد نوع الكائن والسياق ثم افحص الموجود المقصود.
- كيف تتجنب تكراره؟
- سجل معرّفات الحاويات والصور منفصلة.
افتراض أن الحاوية تفصل النواة كالآلة الافتراضية.
- لماذا يحدث؟
- فُهم عزل النواة المشتركة كأنه نظام ضيف مستقل.
- كيف تصلحه؟
- اختر بنية عزل تناسب حد الثقة الفعلي.
- كيف تتجنب تكراره؟
- راجع مشاركة النواة وصلاحيات المحرك والتركيبات وثقة المستأجر معاً.
اختبر فهمك
1. تستخدم حاويتان الصورة نفسها؛ هل تتطابق ملفاتهما القابلة للكتابة؟
اعرض الحل المشروح
لا؛ تتشاركان محتوى الصورة الثابت وتملكان طبقتي كتابة وإعدادَي تشغيل مستقلين. لا يغير تعديل إحداهما الصورة أو طبقة الأخرى. وقد تربط تركيبات مشتركة البيانات عن قصد، ويجب تقييمها مستقلة عن مشاركة الصورة.
2. لماذا تفحص السياق قبل تفسير قائمة حاويات مفاجئة؟
اعرض الحل المشروح
قد يخاطب العميل مقبساً آخر أو محركاً rootless أو وجهة بعيدة. تبدو القائمة من محرك خاطئ كفقد بيانات بينما الكائنات في موضعها. أثبت هوية الوجهة أولاً ثم قارن المعرّفات بفحص قراءة مصرح.
أهم ما تعلمته
- ميّز عزل العملية وهوية الصورة وحالة التشغيل.
- يحدد السياق وجهة ولا يمنح تصريحاً بالتجربة.