Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker: Complete Guide to Containers, Images, D...

Docker: Complete Guide to Containers, Images, Dockerfile, Compose & Deployment | Waseem Alhatmi

# Docker: Complete Guide to Containers, Images, Dockerfile, Docker Compose & Deployment

**إعداد وتقديم: Waseem Alhatmi (وسيم مطلق الحاتمي)**

هذا العرض التقديمي يقدم شرحًا شاملًا ومتكاملًا لتقنية **Docker**، بدءًا من المفاهيم الأساسية للحاويات (Containers) وحتى بناء وتشغيل وإدارة التطبيقات باستخدام Docker.

يتناول العرض أهم المفاهيم والأدوات المرتبطة بـ Docker، بما في ذلك:

* ما هو Docker ولماذا نستخدمه؟
* مفهوم Containers والحاويات البرمجية
* الفرق بين Docker وVirtual Machines
* Docker Engine وDocker Architecture
* Docker Images
* Docker Containers
* Docker Hub
* Dockerfile وكتابة ملفات بناء الصور
* Docker Commands والأوامر الأساسية
* إدارة وتشغيل الحاويات
* Volumes وتخزين البيانات
* Networks وشبكات Docker
* Docker Compose
* بناء وتشغيل التطبيقات متعددة الحاويات
* ربط الخدمات وقواعد البيانات باستخدام Docker
* إدارة الصور والحاويات
* Containerization وApplication Deployment
* أفضل الممارسات في استخدام Docker
* أمثلة وتطبيقات عملية

يهدف هذا العرض إلى توفير مرجع تعليمي عملي يساعد الطلاب والمطورين والمهتمين بالحوسبة السحابية وتطوير البرمجيات على فهم Docker واستخدامه في بيئات التطوير والنشر.

**Author:** Waseem Alhatmi
**Arabic Name:** وسيم مطلق الحاتمي

**GitHub:** https://github.com/waseemalhatmi
**Website:** https://waseemalhatmi.42web.io/
**SlideShare:** https://www.slideshare.net/waseemalhatemy733

Avatar for waseemalhatmi

waseemalhatmi

September 08, 2026

More Decks by waseemalhatmi

Other Decks in Programming

Transcript

  1. ‫قبل ظهور ‪ ،Docker‬كان االعتماد األساسي على تقنية االفتراضية‬ ‫(‪

    ،)Virtualization‬حيث يتم تشغيل التطبيقات داخل أنظمة تشغيل‬ ‫وهمية (‪.)Virtual Machines‬‬
  2. ‫ورغم أن هذه التقنية كانت فعالة‪ ،‬إال أنها كانت‪:‬‬ ‫تستهلك

    موارد كبيرة‬ ‫بطيئة في التشغيل‬ ‫معقدة في اإلدارة‬
  3. ‫في أنظمة ‪ ،Linux‬كانت هناك تقنيات قديمة تسمح بعزل العمليات

    مثل‪:‬‬ ‫‪Chroot‬‬ ‫‪Cgroups‬‬ ‫‪namespaces‬‬ ‫لكن هذه التقنيات لم تكن سهلة االستخدام للمطورين‬
  4. ‫في عام ‪ ،2013‬قامت شركة ‪ .Docker Inc‬بإطالق‬ ‫‪ Docker‬كمنصة

    مفتوحة المصدر‪ ،‬وقدمت مفهوم الحاويات‬ ‫بطريقة‪ :‬بسيطة‪ ،‬عملية‪ ،‬وسهلة النشر‬
  5. ‫ما هو (‪)Docker‬‬ ‫هو تطبيق مفتوح المصدر يعمل بشكل مستقل‪

    ،‬ويُستخدم‬ ‫كمحرك (‪ )Engine‬لتشغيل التطبيقات المعتمدة على الحاويات‬ ‫ّ‬ ‫(‪.)Containerized Applications‬‬
  6. ‫يتم تثبيت ‪ Docker‬على نظام التشغيل‪ ،‬ويف ّ‬ ‫ضل أن‬

    ‫يكون على ‪ ،Linux‬لكنه متوفر أي ً‬ ‫ضا على‬ ‫‪Windows‬و‪.macOS‬‬
  7. ‫ً‬ ‫معزوال عن باقي‬ ‫التطبيق الذي يعمل داخل حاوية يكون‬

    ‫شعورا وكأنه‬ ‫النظام وعن الحاويات األخرى‪ ،‬لكنه يعطي‬ ‫ً‬ ‫يعمل داخل نظام تشغيل خاص به‪.‬‬
  8. ‫تخيل ‪ Docker‬كأنه صندوق تشغيل ذكي تضع فيه تطبيقك مع‬

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

    ‫‪Ops‬‬ ‫الحوسبة‬ ‫السحابية‬ ‫النشر‬ ‫السريع‬ ‫تطوير التطبيقات‬
  10. ‫ما هي االفتراضية (‪)Virtualization‬‬ ‫هي تقنية تتيح لك إنشاء خدمات

    تقنية باستخدام موارد كانت‬ ‫مرتبطة سابقًا بالهاردوير فقط‪ .‬تسمح لك باستغالل كامل قدرات‬ ‫الجهاز الفيزيائي عن طريق تقسيمه إلى عدة بيئات أو مستخدمين‪.‬‬
  11. ‫‪Containers‬‬ ‫‪Virtual Machines‬‬ ‫تشترك في نفس نواة النظام‬ ‫كل ‪VM‬يحتوي

    على نظام تشغيل كامل‬ ‫خفيفة جدًا‬ ‫ثقيلة‬ ‫تعمل بسرعة‬ ‫بطيئة في اإلقالع‬ ‫تبدأ في مللي ثانية‬ ‫تستهلك موارد كثيرة‬
  12. ‫ال‪ Docker ،‬هو مجموعة أدوات فقط‪ ،‬لكنه يعتمد على ميزات‬

    ‫ً‬ ‫أصال في ‪ ،Linux‬دعم الحاويات في ‪Linux‬‬ ‫الحاويات الموجودة‬ ‫مستقرا‬ ‫موجود منذ زمن طويل وأصبح‬ ‫ً‬
  13. ‫ألنه يحل مشاكل اختالف البيئات‬ ‫يسرع عملية التطوير‬ ‫ّ‬ ‫يقلل

    األخطاء‬ ‫يسهل التعاون بين الفرق‬ ‫يعمل على أي نظام تقريبًا‬
  14. ‫ر‬ ‫الشيحة ‪73‬‬ ‫ر‬ ‫الشيحة ‪13‬‬ ‫ر‬ ‫الشيحة ‪43‬‬ ‫ر‬

    ‫الشيحة ‪14‬‬ ‫ر‬ ‫الشيحة ‪75‬‬ ‫ر‬ ‫الشيحة ‪44‬‬ ‫ر‬ ‫الشيحة ‪06‬‬ ‫ر‬ ‫الشيحة ‪46‬‬ ‫ر‬ ‫الشيحة ‪45‬‬ ‫ر‬ ‫الشيحة ‪05‬‬
  15. ‫تضمن هذه الوحدات أن‪:‬‬ ‫ال تُفقد عند إيقاف أو حذف‬

    ‫الحاوية‬ ‫البيانات المهمة التي تُنشأ داخل‬ ‫الحاوية‬
  16. ‫يستخدم ‪ Docker‬تقنية تُس ّمى ‪ Namespaces‬لتوفير بيئة‬ ‫معزولة تُس

    ّمى ‪.Container‬‬ ‫عند تشغيل حاوية‪ ،‬يقوم ‪ Docker‬بإنشاء مجموعة من الـ‬ ‫‪ Namespaces‬الخاصة بها‪.‬‬
  17. ‫باستخدام ‪ ،Docker Compose‬تقوم باستعمال ملف من‬ ‫نوع ‪YAML‬من أجل

    إعداد وتهيئة خدمات التطبيق‬ ‫(‪.)Services‬‬
  18. ‫‪YAML‬هي اختصار لـ ‪Yet Another Markup‬‬ ‫‪ Language‬وهي لغة تنسيق

    نصي بسيطة وسهلة القراءة‬ ‫تُستخدم لكتابة اإلعدادات والتهيئة‪.‬‬
  19. ‫ما الذي يفعله ‪Docker Compose‬؟‬ ‫بدل أن تشغّل كل حاوية

    بأمر منفصل‪ ،‬يقوم ‪Docker‬‬ ‫‪ Compose‬بتشغيل جميع الحاويات معًا بأمر واحد فقط‪.‬‬
  20. ،‫ لوحده‬WordPress ،‫ لوحده‬MySQL :‫بدل ما تشغّل‬ ‫ تشغّلهم كلهم

    بأمر واحد‬،‫ لوحده‬phpMyAdmin docker-compose up :‫وإيقافهم‬ docker-compose down
  21. ‫‪Docker‬‬ ‫صة للحاويات تُستخدم إلنشاء التطبيقات ونشرها وتشغيلها بسهولة‬ ‫هو

    من ّ‬ ‫داخل حاويات ‪ ،Docker‬حيث تحتوي الحاوية على جميع االعتمادات الالزمة‬ ‫لتشغيل التطبيق مثل (اإلطارات البرمجية‪ ،‬المكتبات‪ ،‬الملفات التنفيذية… إلخ)‪.‬‬
  22. ‫‪Docker‬‬ ‫يمكن نقل الحاوية نفسها من بيئة إلى أخرى بسهولة

    كبيرة‪ ،‬كما يضمن‬ ‫‪ Docker‬أن الكود الذي تم اختباره سيعمل بنفس الشكل في بيئة اإلنتاج دون‬ ‫مشاكل اختالف البيئة‪.‬‬
  23. ‫‪Docker Compose‬‬ ‫يُستخدم من أجل إعداد وتشغيل عدة حاويات ‪Docker‬على

    نفس الجهاز (‬ ‫‪Host‬واحد)‪ ،‬بحيث ال تحتاج إلى تشغيل كل حاوية على حدة‪.‬‬
  24. ‫‪Docker Compose‬‬ ‫يُستخدم ‪ Docker Compose‬لتشغيل عدة حاويات على أنها

    خدمة واحدة‪.‬‬ ‫كل حاوية تعمل بشكل مستقل‪ ،‬لكنها تستطيع التواصل مع الحاويات األخرى عند‬ ‫الحاجة‪.‬‬
  25. ‫‪Docker Swarm‬‬ ‫هو أداة إلدارة وتنظيم الحاويات (‪)Container Orchestration Tool‬‬

    ‫تتيح لك تشغيل وربط الحاويات على عدة أجهزة (‪.)Hosts‬‬
  26. ‫‪Docker Swarm‬‬ ‫يستطيع ‪ Docker Swarm‬تنفيذ مهام مثل‪ :‬توسيع التطبيق‪

    ،‬إعادة تشغيل‬ ‫الحاوية تلقائيًا عند تعطلها‪ ،‬ربط الحاويات شبكيًا‪ ،‬إدارة عدد كبير من الحاويات‬ ‫بسهولة‬
  27. ‫‪Kubernetes‬‬ ‫يقوم ‪ Kubernetes‬بإدارة التطبيقات المبنية على الحاويات لتعمل على‬

    ‫مجموعة من األجهزة‪ ،‬ويقوم بأتمتة عمليات‪ :‬النشر (‪،)Deployment‬‬ ‫اإلدارة‪ ،‬التوسيع‪ ،‬التعافي من األعطال وذلك سواء كان على بنية محلية أو على‬ ‫السحابة العامة‪.‬‬
  28. ‫‪Kubernetes‬‬ ‫يقوم ‪ Kubernetes‬بإدارة التطبيقات المبنية على الحاويات لتعمل على‬

    ‫مجموعة من األجهزة‪ ،‬ويقوم بأتمتة عمليات‪ :‬النشر (‪،)Deployment‬‬ ‫اإلدارة‪ ،‬التوسيع‪ ،‬التعافي من األعطال وذلك سواء كان على بنية محلية أو على‬ ‫السحابة العامة‪.‬‬
  29. ‫باختصار‪...‬‬ ‫يُستخدم ‪ Docker‬لنشر حاوية واحدة‪ ،‬و ‪Docker Compose‬لنشر عدة‬

    ‫حاويات على جهاز واحد‪ ،‬بينما يُستخدم ‪ Docker Swarm‬إلدارة تطبيقات‬ ‫بسيطة على عدة أجهزة‪ ،‬ويُستخدم ‪ Kubernetes‬إلدارة تطبيقات كبيرة قابلة‬ ‫سع بشكل مؤتمت‪.‬‬ ‫للتو ّ‬