العودة إلى الدورة

الدرس 11: مقدمة لتخزين الحاويات وحالة اللاجنسية (Statelessness)

Docker من الصفر إلى الاحتراف: الدورة الشاملة لتغليف التطبيقات (Containerization) للمبتدئين

الدرس 11: مقدمة لتخزين الحاويات وحالة اللاجنسية (Statelessness)

بشكل افتراضي، تم تصميم الحاويات لتكون عديمة الحالة (stateless) و زائلة (ephemeral) (قصيرة العمر). هذا يعني أن أي بيانات تُكتب داخل طبقة الكتابة الخاصة بالحاوية تُفقد عند إيقاف الحاوية وإزالتها.

الحاجة إلى الاستمرارية (Persistence)

تحتاج معظم التطبيقات إلى تخزين البيانات بشكل دائم:

  • قواعد البيانات (PostgreSQL, MongoDB) تحتاج إلى الاحتفاظ بملفات بياناتها.
  • تطبيقات الويب تحتاج إلى تخزين ملفات المستخدمين التي تم تحميلها، أو ملفات السجل، أو بيانات الجلسة (session data).

إذا لم نستخدم التخزين الدائم، فإن إعادة تشغيل حاوية قاعدة بيانات ستؤدي إلى فقدان كامل لجميع بيانات المستخدمين.

حلول Docker للاستمرارية

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

  1. المجلدات (Volumes): الطريقة المفضلة والأكثر متانة. يقوم Docker بإدارة موقع التخزين على الجهاز المضيف.
  2. التثبيتات المرتبطة (Bind Mounts): تعيّن ملفاً أو دليلاً محدداً على الجهاز المضيف مباشرة داخل الحاوية. ممتاز للتطوير.

مفهوم مشغلات التخزين (Storage Drivers)

يستخدم Docker مشغل تخزين (مثل OverlayFS, ZFS) لإدارة كيفية تخزين واسترداد الملفات، خاصة فيما يتعلق بطبقات الصورة والطبقة الرقيقة القابلة للكتابة في الحاوية.

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