D10.1 Docker Swarm — Θεωρία 🐝

Τι είναι το Docker Swarm

Το Docker Swarm είναι το native clustering solution του Docker. Μετατρέπει πολλά Docker hosts σε ένα virtual cluster που διαχειρίζεται containers ως services.


Swarm vs Kubernetes

┌─────────────────────────────────────────────────────────┐
│             Swarm vs Kubernetes                         │
├─────────────────────┬───────────────────────────────────┤
│ Docker Swarm        │ Kubernetes                        │
├─────────────────────┼───────────────────────────────────┤
│ ✅ Απλό setup       │ ❌ Πολύπλοκο setup                │
│ ✅ Docker-native    │ ⚙️ Χρειάζεται extra tools         │
│ ✅ Λιγότερα resources│ ❌ Heavy resource overhead        │
│ ✅ Ιδανικό για SMB  │ ✅ Enterprise scale               │
│ ❌ Λιγότερα features│ ✅ Auto-scaling, CRDs, κ.ά.       │
│ ❌ Μικρή community  │ ✅ Τεράστια community             │
└─────────────────────┴───────────────────────────────────┘

→ Χρησιμοποίησε Swarm αν:
  ├── Έχεις ήδη Docker
  ├── 2-10 nodes
  ├── Δεν χρειάζεσαι Kubernetes features
  └── Θέλεις απλό HA setup

Βασικές έννοιες

Docker Swarm Concepts:
│
├── Node
│   ├── Manager Node  → orchestration, scheduling, raft consensus
│   └── Worker Node   → εκτελεί tasks
│
├── Service
│   ├── Image + config + replicas
│   ├── replicated: N αντίγραφα σε workers
│   └── global:     1 σε ΚΑΘΕ node
│
├── Task
│   └── Μια εκτέλεση ενός container
│       (1 service × N replicas = N tasks)
│
├── Stack
│   └── Σύνολο services (σαν docker-compose)
│
└── Overlay Network
    └── Multi-host network (αυτόματο DNS)

Swarm Quorum

Manager nodes και quorum (fault tolerance):
│
├── 1 manager → 0 fault tolerance (dev only!)
├── 3 managers → 1 μπορεί να πέσει   ✅
├── 5 managers → 2 μπορούν να πέσουν ✅
└── 7 managers → 3 μπορούν να πέσουν ✅

Κανόνας: floor(N/2) + 1 = quorum
  5 managers → quorum = 3
  Αν 3+ πέσουν → cluster freeze (no new tasks)

Συνιστώμενο για production: 3 managers

Σύνοψη D10.1

Docker Swarm
│
├── Nodes: Manager (orchestration) + Worker (execution)
├── Service: image + replicas + update config
├── Task: 1 running container (= 1 service replica)
├── Stack: multi-service (compose-style)
└── Quorum: 3 managers → 1 fault tolerance ✅