دورة Docker: المفاهيم والاستخدام العملي

Aug 21, 2024

# ملاحظات دورة Docker الكاملة

## نظرة عامة على الدورة
- **هدف الدورة:** اكتساب فهم عميق لمفاهيم Docker واستخدامه في تطوير البرمجيات.
- **هيكل الدورة:** مزيج من الشروحات النظرية والعروض العملية.
- **المواضيع المشمولة:**  
  - مقدمة عن Docker والمشاكل التي يحلها  
  - الفرق بين Docker والآلات الافتراضية  
  - تثبيت Docker  
  - الأوامر الرئيسية لـ Docker  
  - سير العمل العملي لـ Docker مع مشروع توضيحي  
  - نشر التطبيقات المعبأة في حاويات  
  - استمرارية البيانات مع الأوضاع Docker

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

## مستودع الحاويات
- **ما هو؟** تخزين للحاويات، يسمح بمشاركة وتحريك التطبيقات.
- **الأنواع:** 
  - مستودعات خاصة (خاصة بالشركة)  
  - مستودعات عامة (مثل Docker Hub)
  - **Docker Hub:** أكثر من 100,000 صورة حاوية متاحة.

## عملية التطوير مع Docker
- **العملية التقليدية:**
  - التثبيت اليدوي للخدمات على جهاز كل مطور مما يؤدي إلى تكوينات معقدة.
- **مع الحاويات:**  
  - يسحب المطورون الحاويات اللازمة بأمر واحد، متجنبين خطوات التثبيت اليدوي.
  - تضمن الحاويات البيئات الموحدة عبر إعدادات التطوير المختلفة.

## عملية النشر مع Docker
- **النشر التقليدي:**  
  - تقدم فريق التطوير المصنوعات والإرشادات لفريق العمليات، مما يؤدي إلى احتمالية وجود صراعات وسوء تواصل.
- **مع الحاويات:**  
  - يقوم المطورون بتعبئة التطبيقات في الحاويات، مما يجعل عملية النشر أبسط ويزيل خطوات التكوين على السيرفر.

## الجوانب التقنية للحاويات
- **الصور مقابل الحاويات:**  
  - **الصور:** حزم تحتوي على رمز التطبيق والاعتمادات.
  - **الحاويات:** حالات قيد التشغيل للصور مع بيئتها ونظامها الخاص.

## مثال عملي: سحب وتشغيل الحاويات
- **سحب صورة:**  
  - استخدم `docker pull <image_name>` لجلب الصور من المستودعات.
- **تشغيل حاوية:**  
  - استخدم `docker run <image_name>` لبدء تشغيل الحاوية.
  - فهم الفرق بين الحاويات الجارية والمتوقفة.

## Docker مقابل الآلات الافتراضية
- **Docker:**  
  - يخصص طبقة التطبيق باستخدام نواة المضيف، مما يوفر بيئات أصغر وأسرع وأكثر كفاءة.
- **الآلات الافتراضية:**  
  - يخصص نظام التشغيل بالكامل بنواته الخاصة، مما يؤدي إلى عبء أكبر.

## تثبيت Docker
- **خطوات التثبيت:**  
  - تحقق من متطلبات النظام لتثبيت Docker على أنظمة التشغيل المختلفة.
  - قم بتثبيت Docker من خلال الوثائق الرسمية بناءً على نظام التشغيل.

## أوامر Docker الأساسية
- **الأوامر الشائعة:**  
  - `docker run`: بدء تشغيل حاوية من صورة.
  - `docker ps`: سرد الحاويات الجارية.
  - `docker stop <container_id>`: إيقاف تشغيل حاوية جارية.
  - `docker images`: سرد الصور المتاحة.
  - `docker logs <container_id>`: عرض سجلات حاوية.

## Docker Compose
- **الغرض:**  
  - تبسيط إدارة التطبيقات متعددة الحاويات.
- **الميزات الرئيسية:**  
  - تعريف الخدمات، الشبكات، والحجوم في ملف YAML واحد.
  - سهل البدء وإيقاف الحاويات معًا.

## بناء ووسم صور Docker
- **Dockerfile:**  
  - خطة لإنشاء الصور، تحدد الصور الأساسية، الأوامر، والتكوينات.
- **بناء صورة:**  
  - استخدم `docker build -t <image_name>:<tag> .`
- **دفع إلى مستودع:**  
  - قم بالمصادقة ودفع الصور إلى مستودع Docker خاص (مثل AWS ECR).

## استمرارية البيانات مع أحجام Docker
- **أنواع الأحجام:**  
  - **حجم المضيف:** يعين دليلا من المضيف إلى الحاوية.
  - **الحجم المجهول:** يُدار تلقائيًا بواسطة Docker، بدون اسم مرجعي.
  - **الحجم المسمى:** يحدده المستخدم، يسهل الرجوع إليه.

## الخلاصة والخطوات التالية
- **Kubernetes:**  
  - يوصى به لإدارة التطبيقات المعقدة مع حاويات متعددة.
- **التعلم المزيد:**  
  - استكشف المزيد حول Docker وKubernetes وأدوات DevOps الأخرى.