مقدمة
لو كنت ناوي تشتغل في مجال البرمجة أو السيرفرات وغيرها، أكيد سمعت عن دوكر (Docker). لكن كثير يعتقد أنه مجرد أداة للمطورين فقط. في هذا الموضوع بشرح وش يعني دوكر (Docker)؟ كيف يشتغل؟ وليش هو مهم؟ وكيف تستخدمه خطوة بخطوة؟ بشكل سهل وواضح حتى لو أول مرة تسمع عنه.
وش يعني دوكر (Docker)؟
دوكر (Docker) هو برنامج مفتوح المصدر يساعدك على بناء وتشغيل التطبيقات داخل بيئة معزولة تسمى حاوية (Container). يعني بدل ما تعاني مع تثبيت المكتبات و إعداد بيئة التطوير و توافق الإصدارات، دوكر (Docker) يحط كل شيء في صندوق واحد وجاهز للتشغيل.
طيب لو تبي تحمل تطبيق على عدة انظمة، لكن يحتاج في كل نظام تشغيل او بيئة ملفات معينة عشان يشتغل بشكل صحيح، راح تعاني صح؟ يعني لو ناوي تستخدم أكثر من نظام تشغيل او بيئة راح تضطر تجهز البيئة لكل نظام. هنا يجي دور دوكر (Docker) اذا قدرت تشغل التطبيق داخل دوكر (Docker) معناته انك بتقدر تشغله على انظمة تشغيل مختلفة بدون ما تشيل هم التوافق او التجهيز لان التطبيق راح يشتغل في بيئة متماثلة داخل محرك دوكر (Docker Engine) على كل انظمة التشغيل.
مثال:
تخيل أنك تبي تشغل تطبيق ويب على جهازك. راح تحتاج إلى تثبيت لغة برمجة، وقواعد البيانات، وغيرها من التبعيات. لكن مع دوكر (Docker)، تقدر تجمع كل هاذي المكونات في حاوية (Container) واحدة، و تشغلها على أي جهاز يدعم دوكر (Docker) بدون الحاجة إلى تثبيت أي شيء إضافي.
ممكن انك راح تتسائل وتقول وش التطبيقات اللي يشغلها دوكر (Docker)، هل ممكن يشغل تطبيقات سطح مكتب عادية؟ الجواب لا، دوكر (Docker) يشغل تطبيقات الخدمات اللي ممكن تتعامل معها اما كواجهة رسومية عن طريق الويب او على سطر الأوامر.
أمثلة على انواع التطبيقات اللي يشغلها دوكر (Docker):
تطبيقات الويب: Node.js, Django, Laravel
قواعد البيانات: MySQL, MongoDB, PostgreSQL
خدمات البنية التحتية: Nginx, Apache, kafka
أداوت الذكاء الإصطناعي و تحليل البيانات: Jupyter Notebook, TensorFlow. PyTorch
الفرق بين دوكر (Docker) و الآلات الإفتراضية (Virtual Machines)
الآلات الإفتراضية (Virtual Machines)
الأدا: أثقل – نظام كامل
السرعة: بطيء بالإقلاع
العزل: عالي جدًا
استهلاك الموارد: عالي
سهولة الاستخدام: معقدة شوي
دوكر (Docker)
الأداء: خفيف – يشارك نواة النظام
السرعة: سريع جدًا
العزل: جيد ومناسب للتطبيقات
استهلاك الموارد: قليل جدًا
سهولة الاستخدام: بسيطة
كيف دوكر (Docker) يشتغل؟
يستخدم فكرة التحوية Containerization بدل من الفرضنة Virtualization.
ملف Dockerfile: ملف تكتب فيه كيف تبني بيئتك (مثلاً نظام التشغيل، إصدار البايثون، المكتبات).
الصورة (image): نسخة جاهزة من البيئة اللي بنيتها.
الحاوية (Container):
-نسخة شغّالة من الصورة (image).
-تطبيق + إعداداته + النظام المصغر.
-تعمل على نفس نواة النظام، لكن منفصله عن باقي النظام والتطبيقات.
محرك دوكر (Docker Engine): هو اللي يدير هذه الحاويات.
نقدر نشبه ملف Dockerfile بـالوصفة، و الصورة (image) بـالمكونات، و الحاوية (Container) بـالفرن - اللي راح يحتوي على الوجبة كاملة.
عندنا ايضاً منصة Docker Hub تُعتبر مثل متجر التطبيقات.
Docker Hub هو موقع فيه آلاف الصور (images) الجاهزة للتشغيل.
مثال: تبي تحمل صورة (image) جاهزة من MySQL, Nginx, Laravel راح تحصلهم في المنصة.
ليه مهم أستخدم دوكر (Docker)؟
توحيد بيئة العمل بين الفريق او المطورين.
نشر آمن وسريع: جرّب التطبيق محليًا وانقله للسيرفر بنفس الصورة.
تشغيل التطبيقات على أي جهاز بنفس النتائج
تقليل التكاليف: استهلاك موارد أقل من الأجهزة افتراضية (VMs).
سهولة النسخ والتمرير: بإستخدام صور دوكر (Docker Images).
بيئة اختبار معزولة لأي مشروع.
كيف تستخدم دوكر (Docker)؟
طريقة التثبيت
على Linux (Ubuntu مثال):
خطوات التثبيت https://docs.docker.com/engine/install/ubuntu/
على Windows/macOS:
نزل Docker Desktop من الموقع الرسمي: https://www.docker.com/products/docker-desktop
أوامر أساسية في دوكر (Docker)
معرفة الإصدار
docker --version
تحميل صورة من منصة Docker Hub
docker pull <اسم_الصورة>
عرض الصور الموجودة
docker images
تشغيل تطبيق من صورة
docker run <اسم_الصورة>
عرض الحاويات المشغلة
docker ps
تشغيل الحاوية
docker start <رقم_الحاوية>
إيقاف الحاوية
docker stop <رقم_الحاوية>
حذف الحاوية
docker rm <رقم_الحاوية>
إعادة تشغيل الحاوية
docker restart <رقم_الحاوية>
بناء ملف Dockerfile
docker build -t <dockerfile_اسم>
شغّل أول حاوية (Container)
docker run hello-world
راح يعطيك رسالة نجاح تؤكد أن كل شيء تمام.
مثال عملي لتشغيل NGINX
- تحميل الصورة:
docker pull nginx
- تشغيل الخادم:
docker run -d -p 8080:80 nginx
- افتح المتصفح:
http://localhost:8080
في هاذي الخطوات البسيطة قدرت تشغل NGINX بكل سهولة
شرح ملف Dockerfile
تقدر تبني صورتك الخاصة لتطبيقك باستخدام Dockerfile عن طريق كتابة الملف بالشكل التالي:
FROM node:18
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]
وش صار هنا؟
FROM: اخترنا صورة فيها node.js جاهز
WORKDIR: حددنا مكان المشروع
COPY: نسخنا الملفات
RUN: تثبيت المكتبات
CMD: أمر التشغيل
مرحلة بناء و تشغيل التطبيق:
docker build -t <اسم_الملف> .
docker run -p 3000:3000 <اسم_الملف>
أدوات تكمل Docker
مثل Docker Compose: لإدارة أكثر من حاوية (مثلاً: تطبيق + قاعدة بيانات)
مثل Portainer: واجهة رسومية لإدارة حاويات دوكر (Docker)
مثل Kubernetes: لإدارة آلاف الحاويات في بيئات الإنتاج
مصادر وموارد إضافية
-