تخطَّ إلى المحتوى

🐳 شرح Docker

Docker Swarm مقابل Kubernetes

الدرس 27 من 29· ⏱ 3 دقائق قراءة

Docker Swarm

Swarm هو نظام تنسيق حاويات مدمج في Docker نفسه. لا يحتاج تثبيت إضافي.

المفاهيم الأساسية

  • Service — تعريف الحاوية التي تريد تشغيلها (صورة، نسخ، شبكة).
  • Stack — ملف Compose يُنشر كاملًا كخدمات Swarm.
  • Node — جهاز في الكتلة (manager أو worker).

بدء الكتلة

# تهيئة الـ Swarm على العقدة الرئيسية
docker swarm init --advertise-addr 192.168.1.10

# عرض الأمر لانضمام العقد العاملة
docker swarm join-token worker

# تنفيذ الأمر الناتج على العقد العاملة
docker swarm join --token SWMTKN-xxx 192.168.1.10:2377

نشر Stack

# نشر تطبيق Compose كـ Stack في Swarm
docker stack deploy -c docker-compose.yml myapp

# عرض الخدمات
docker service ls

# عرض تفاصيل خدمة
docker service ps myapp_api

# توسيع عدد النسخ
docker service scale myapp_api=5

Kubernetes

Kubernetes (K8s) من Google — أقوى وأكثر تعقيدًا.

المفاهيم الأساسية

  • Pod — أصغر وحدة، حاوية واحدة أو أكثر تشترك في الشبكة والتخزين.
  • Deployment — يضمن تشغيل عدد معين من Pods.
  • Service — يوفر عنوان IP ثابت وتوزيع تحميل للـ Pods.
  • Namespace — عزل افتراضي داخل الكتلة.

التشغيل المحلي

# Minikube (يحتاج VM)
minikube start --cpus 4 --memory 8192

# K3s (خفيف، لا يحتاج VM)
k3s server

مثال نشر

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api
spec:
  replicas: 3
  selector:
    matchLabels:
      app: api
  template:
    metadata:
      labels:
        app: api
    spec:
      containers:
      - name: api
        image: myapp/api:latest
        ports:
        - containerPort: 3000
kubectl apply -f deployment.yaml
kubectl get pods
kubectl scale deployment api --replicas=5

جدول المقارنة

المعيارDocker SwarmKubernetes
سهولة الإعدادسهل جدًا (أمر واحد)معقّد (يحتاج أدوات متعددة)
المنحنى التعليميبسيط (أيام)حاد (أسابيع/شهور)
المدمج مع Dockerأصلييحتاج تكامل خارجي
اكتشاف الخدماتمدمج (DNS)مدمج (DNS + Service)
توسيع السعةتلقائي مع flagsتلقائي مع HPA
التحديثات المتدرجةrolling update بسيطrolling + canary + blue-green
الشبكاتoverlay بسيطCNI (Calico،Flannel،Weave)
التخزينvolumes + pluginsPVC + CSI + StorageClasses
المجتمع والنظام البيئيصغير نسبيًاضخم
مناسب لـفرق صغيرة-متوسطةمؤسسات-سحابات عامة
الإعداد للإنتاجسريع (ساعات)طويل (أيام/أسابيع)

متى تختار Swarm؟

  • فريقك صغير (1-5 مطورين).
  • مشروعك لا يتجاوز 5-10 خدمات.
  • تريد حلًا جاهزًا دون تعقيد.
  • تستخدم Docker بالفعل ولا تريد أدوات إضافية.

متى تختار Kubernetes؟

  • فريق كبير أو مؤسسة.
  • نشر متعدد البيئات (dev/staging/prod).
  • تحتاج auto-scaling، canary deployments، service mesh.
  • تطبيقك يعمل عبر 20+ خدمة.
  • تريد نشر سحابي (EKS، AKS، GKE).

⚠️ إذا كنت متحيرًا، ابدأ بـ Swarm. K8s رائع لكن قد يكون overkill لمشروع صغير.

فكر في K0s / K3s

إذا أردت K8s لكن أخف وزنًا:

الأداةالوصفRAM
K3sK8s معتمد من CNI، خفيف512 MB
K0sK8s بسيط بدون تعقيد1 GB
MicroK8sمن Canonical، مناسب للـ Edge1 GB

🎯 التالي: أمن الحاويات — مستوى متقدم

شرح Docker Swarm مقابل Kubernetes — Docker بالعربي
Docker Swarm مقابل KubernetesDocker بالعربي · The Code Fix

📚 لمزيد من التعمّق في Docker، راجِع التوثيق الرسمي لـ Docker.

هل كان هذا الدرس مفيدًا؟