DevOps والسحابة

شرح Docker: الصور والحاويات ووحدات التخزين

ثلاثة مفاهيم لبيئات قابلة للتكرار دون الخلط بين التشغيل والبيانات الدائمة.

حاويات شحن توضح مفهوم الحزم الذي يستعيره Docker.

حاويات شحن توضح مفهوم الحزم الذي يستعيره Docker.

المشكلة الملموسة التي تحلها الحاوية

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

فهم طبقات الصورة

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

اكتب ملف Dockerfile صديقًا للإنتاج

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

التمييز بين الصورة والحاوية في التنفيذ

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

المنافذ والشبكات والاتصالات بين المكونات

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

الحفاظ على البيانات مع وحدات التخزين

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

توفير التكوين والأسرار في وقت التشغيل

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

مثال: نشر تطبيق ويب وقاعدته

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

المراقبة والحد والتحديث

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

تجنب الأخطاء الشائعة والاستعداد للتسليم

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

ورشة عمل: أثبت أن طلبك قابل للتكرار

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

الأسئلة المتداولة: العزل والنسخ الاحتياطي

هل الحاوية عبارة عن آلة افتراضية كاملة؟ إنه يشارك النواة المضيفة في بيئة التنفيذ الخاصة به. ولذلك فإن العزلة لا تعفي من تقييد الحقوق والحفاظ على المضيف.

هل وحدة التخزين نسخة احتياطية؟ لا، فهو يحتفظ بالبيانات خارج الحاوية، ولكنه قد يتعرض للحذف أو الفساد أو فشل التخزين.

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

TUPLIFY STUDIO

ما يمكننا تطويره لك

نجهز التطبيقات وAPI بحاويات ونضبط Docker وفحوص الصحة والنسخ الاحتياطي.

لنتحدث عن مشروعك

للمزيد · الوثائق الرسمية

Docker — Containers
  • Docker
  • Containers
  • DevOps

Tuplify Studio · أدلة تعليمية أُعدت بمساعدة الذكاء الاصطناعي. الأمثلة توضيحية.