ما هو Docker؟ الحاويات بشرح مبسط لغير المطورين
Docker أداة تحزم التطبيق مع كل ما يحتاجه ليعمل، من إصدار لغة البرمجة الصحيح، والمكتبات، وأدوات النظام، والإعدادات، في وحدة موحّدة تسمى حاوية (container). تعمل الحاوية بالطريقة نفسها على حاسوب المطور، أو على خادم الاختبار، أو على خادم سحابي، وبذلك تنتهي مشكلة "لكنه كان يعمل على جهازي" الكلاسيكية. وصفة بناء الحاوية ملف نصي قصير اسمه Dockerfile.
لماذا يهم Docker عند البناء بالذكاء الاصطناعي؟
إذا كان تطبيقك يملك خلفية (backend)، أي واجهة API مكتوبة بـ Python أو Node أو C# أو Java، فيجب أن يعمل في مكان يحتوي البرمجيات الصحيحة بالضبط. Docker هو الطريقة الأشيع لجعل ذلك قابلاً للتكرار.
- نشر الخلفيات. كثير من المنصات، ومنها Mythex، تنشر الخلفيات ببناء حاوية من Dockerfile. في Mythex، عندما تطلب "واجهة Web API بـ C#" أو "خلفية Java"، تحصل على التطبيق مع Dockerfile، و"النشر" (Publish) يبني الصورة وينشرها (خلفيات API).
- مغادرة المنصة. إذا صدّرت تطبيقاً بُني بالذكاء الاصطناعي، فإن Dockerfile يجعل تشغيله على منصة أخرى أسهل بكثير. انظر كيف تصدّر تطبيقاً مبنياً بالذكاء الاصطناعي وتستضيفه بنفسك.
- العمل مع المطورين. المطور الذي ينضم إلى مشروعك يستطيع تشغيل التطبيق كله بأمر أو أمرين، بدلاً من قضاء يوم كامل في تثبيت الأشياء.
تشبيه من الحياة اليومية: حاويات الشحن
قبل حاويات الشحن القياسية، كانت البضائع تُحمّل قطعة قطعة: أكياس وبراميل وصناديق، وكل ميناء يتعامل معها بطريقة مختلفة. فجاءت الحاوية الفولاذية القياسية وغيّرت ذلك: تعبئها مرة واحدة، وأي سفينة أو رافعة أو قطار أو شاحنة تستطيع نقلها دون أن تهتم بما بداخلها.
Docker يفعل الشيء نفسه للبرمجيات:
- Dockerfile هو قائمة التعبئة وتعليماتها.
- الصورة (image) هي الحاوية المغلقة والمعبأة.
- الحاوية العاملة هي تلك العلبة وهي تعمل على سفينة، أي على خادم.
- Docker Engine هو الرافعة والسفينة: البرنامج الموجود على الخادم الذي يعرف كيف يشغّل أي حاوية.
كيف يعمل Docker؟
| المكوّن | ما هو |
|---|---|
| Dockerfile | ملف نصي فيه تعليمات خطوة بخطوة لبناء الصورة. |
| Image (الصورة) | حزمة للقراءة فقط: أساسيات نظام التشغيل، وبيئة التشغيل، والمكتبات، وكودك. |
| Container (الحاوية) | نسخة تعمل من الصورة، معزولة عن التطبيقات الأخرى على الجهاز نفسه. |
| Registry (السجل) | مكان لتخزين الصور ومشاركتها، مثل Docker Hub أو سجل مزود السحابة. |
| Docker Engine (المحرك) | الخدمة التي تعمل في الخلفية وتبني الصور وتشغّل الحاويات. مجانية ومفتوحة المصدر. |
| Docker Desktop (تطبيق سطح المكتب) | تطبيق لأجهزة Mac وWindows وLinux يجمع المحرك مع واجهة رسومية. |
الحاويات مقابل الأجهزة الافتراضية: الجهاز الافتراضي يتظاهر بأنه حاسوب كامل منفصل بنظام تشغيل خاص، لذلك يكون ثقيلاً وبطيئاً في البدء. أما الحاوية فتشارك نواة نظام التشغيل في المضيف، وتعزل التطبيق وملفاته فقط، لذلك تبدأ عادةً خلال ثوانٍ وتستهلك ذاكرة أقل بكثير. يمكن تشغيل حاويات كثيرة جنباً إلى جنب على خادم واحد.
مثال عملي: واجهة Python صغيرة
لنفترض أن أداة البناء بالذكاء الاصطناعي أنشأت خلفية Python باستخدام FastAPI لتطبيق حجوزات. قد يبدو Dockerfile كالتالي:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
سطراً بسطر:
| السطر | ما يفعله |
|---|---|
FROM python:3.12-slim | يبدأ من صورة رسمية تحتوي Python 3.12 مثبتاً. |
WORKDIR /app | يعمل داخل مجلد /app في الحاوية. |
COPY requirements.txt . وRUN pip install ... | ينسخ قائمة المكتبات ويثبتها. |
COPY . . | ينسخ كود التطبيق الخاص. |
EXPOSE 8000 | يوضح أن التطبيق يستمع على المنفذ 8000. |
CMD [...] | الأمر الذي يشغّل خادم الويب عند تشغيل الحاوية. |
بكلمات بسيطة: «ابدأ بـ Python 3.12. ثبّت المكتبات المذكورة في requirements.txt. انسخ الكود. شغّل خادم الويب على المنفذ 8000.»
بعد ذلك يشغّل المطور (أو منصة الاستضافة) أمرين:
docker build -t booking-api .
docker run -p 8000:8000 booking-api
الأمر الأول يبني الصورة ويسميها booking-api. والثاني يشغّل حاوية ويربط المنفذ 8000 على الجهاز بالمنفذ 8000 داخل الحاوية. الـ API يعمل الآن بالطريقة نفسها التي سيعمل بها على أي خادم عليه Docker.
لاحظ ما ليس داخل الصورة: كلمات المرور ومفاتيح API. تُمرَّر هذه عند بدء الحاوية كـ متغيرات بيئة، فيمكن للصورة نفسها أن تعمل في الاختبار والإنتاج بإعدادات مختلفة.
مصطلحات أساسية
| المصطلح | المعنى |
|---|---|
| Container (الحاوية) | حزمة معزولة وتعمل من التطبيق وتبعياته. |
| Image (الصورة) | القالب الذي تُبدأ منه الحاوية. |
| Base image (الصورة الأساسية) | نقطة البداية في سطر FROM بملف Dockerfile، مثل python:3.12-slim أو node:22. |
| Layer (طبقة) | كل خطوة في Dockerfile تضيف طبقة مخزّنة مؤقتاً، مما يجعل إعادة البناء أسرع. |
| Port mapping (ربط المنافذ) | ربط منفذ على المضيف بمنفذ داخل الحاوية. |
| Volume (وحدة تخزين) | مساحة تبقى عند استبدال الحاوية. الحاويات نفسها قابلة للاستبدال والتخلص منها. |
| Docker Compose | ملف يصف عدة حاويات تعمل معاً، مثل واجهة API مع قاعدة بيانات. |
| Kubernetes | نظام لتشغيل حاويات كثيرة على خوادم كثيرة. معظم التطبيقات الصغيرة لا تحتاجه. |
مفاهيم خاطئة شائعة
- «Docker جهاز افتراضي.» إنه أخف: الحاويات تشارك نواة المضيف.
- «البيانات المحفوظة داخل الحاوية آمنة.» الحاويات مصممة لتُستبدل وتُرمى. أي شيء يجب أن يبقى، مثل بيانات المستخدمين والملفات المرفوعة، ينتمي إلى قاعدة البيانات أو تخزين الملفات أو وحدة تخزين (volume).
- «وضع الأسرار في Dockerfile مقبول لأنه خاص.» الصور تُشارك وتُدفع إلى السجلات. مرّر الأسرار وقت التشغيل.
- «Docker يجعل التطبيق آمناً.» العزل يساعد، لكن حاوية تشغّل برمجيات قديمة بإعدادات ضعيفة تبقى عرضة للاختراق.
- «كل تطبيق يحتاج Docker.» الموقع الثابت أو الواجهة الأمامية البسيطة يُستضافان عادةً كملفات عادية، دون أي حاوية.
- «Docker Desktop مجاني للجميع.» المحرك مجاني؛ أما Docker Desktop فيتطلب اشتراكاً مدفوعاً للشركات الأكبر، حسب شروط Docker.
ماذا تسأل أداة البناء بالذكاء الاصطناعي؟
- «هل يحتاج هذا التطبيق إلى Dockerfile؟ إذا كان كذلك، اشرح كل سطر بلغة بسيطة.»
- «استخدم صورة أساسية رسمية وصغيرة، وثبّت إصدار لغة البرمجة.»
- «أبقِ الأسرار خارج الصورة. اقرأها من متغيرات البيئة وقت التشغيل.»
- «تأكد من أن الملفات المرفوعة والبيانات تُخزَّن في قاعدة البيانات أو تخزين الملفات، لا داخل الحاوية.»
- «أضف ملف Docker Compose حتى يستطيع المطور تشغيل الواجهة الأمامية والـ API وقاعدة البيانات محلياً بأمر واحد.»
- «أضف نقطة فحص صحة (health check) حتى تعرف المنصة إن كانت الواجهة تعمل.»
Docker في Mythex
لا تحتاج إلى تثبيت Docker أو تشغيله لاستخدام Mythex. يعمل مشروعك في بيئة سحابية خاصة، وعندما تطلب خلفية تحتاج إلى حاوية، مثل C# أو Java أو خدمة Node أو Python مخصصة، يكتب Mythex التطبيق مع Dockerfile، ويعرضه في البيئة المعزولة، وينشره عندما تنشر، دون أي إعداد استضافة (كيف يُختار التقني). في خطة Pro يمكنك تصدير المشروع أو مزامنته مع GitHub لتأخذ Dockerfile معك. لفهم كيف تتصل الواجهة الأمامية بالخلفية، انظر الواجهة الأمامية مقابل الخلفية.
الأسئلة
ما هو Docker بعبارات بسيطة؟
Docker أداة تحزم التطبيق مع كل ما يحتاجه ليعمل، أي بيئة التشغيل والمكتبات والإعدادات، في وحدة موحدة تسمى الحاوية (container). تعمل الحاوية بالطريقة نفسها على الحاسوب المحمول أو على خادم الاختبار أو على خادم سحابي.
ما الفرق بين صورة Docker (image) والحاوية (container)؟
الصورة قالب مغلف للقراءة فقط: التطبيق وتبعياته، مبني من ملف Dockerfile. أما الحاوية فنسخة تعمل من تلك الصورة. يمكنك تشغيل حاويات كثيرة من صورة واحدة.
هل Docker جهاز افتراضي (virtual machine)؟
لا. الجهاز الافتراضي يحاكي حاسوباً كاملاً بنظام تشغيل خاص به. أما الحاويات فتشارك نواة نظام التشغيل في الجهاز المضيف، وتعزل التطبيق وحده، لذلك تبدأ أسرع وتستهلك ذاكرة أقل.
هل Docker مجاني؟
محرك Docker Engine، وهو الجزء الأساسي الذي يشغّل الحاويات، مجاني ومفتوح المصدر. وحسب شروط Docker اعتباراً من سبتمبر 2026، فإن Docker Desktop مجاني للمشاريع مفتوحة المصدر غير التجارية، وللشركات التي لديها أقل من 250 موظفاً وإيرادات سنوية أقل من 10 ملايين دولار؛ أما الشركات الأكبر فتحتاج إلى اشتراك مدفوع.
هل أحتاج إلى تعلم Docker لبناء تطبيق بالذكاء الاصطناعي؟
عادةً لا. كثير من أدوات البناء بالذكاء الاصطناعي تتولى الحاويات عنك. ومن المفيد معرفة ما هو Dockerfile حتى تفهم كيف تُحزم الخلفية (backend)، ولتتمكن من تشغيل التطبيق على منصة أخرى إذا صدّرته.