it

Docker Swarm คืออะไร — คู่มือ Container

Docker Swarm คืออะไร — คู่มือ Container

การทำงานกับ Docker Swarm คืออะไร ต้องอาศัยความเข้าใจที่ถูกต้องตั้งแต่เริ่มต้น มาดูกันว่ามีอะไรบ้างที่ต้องรู้และ pitfalls ที่ต้องหลีกเลี่ยง

วิดีโอประกอบการเรียนรู้ | YouTube @icafefx

Docker Swarm คืออะไร

Docker Swarm คืออะไร — คู่มือ Container

Docker Swarm เป็น Container Orchestration Tool ที่มาพร้อมกับ Docker Engine ตั้งแต่เวอร์ชัน 1.12 ขึ้นไปทำหน้าที่จัดการ container หลายตัวที่กระจายอยู่บนหลาย server ให้ทำงานร่วมกันเป็น cluster เดียว

พูดง่ายๆคือถ้าคุณมี server 5 เครื่องแต่ละเครื่องรัน Docker อยู่ — Docker Swarm จะรวม 5 เครื่องนี้เป็น "กลุ่ม" เดียวแล้วคุณสั่งงานจากจุดเดียวได้เลยไม่ต้อง SSH เข้าไปสั่งทีละเครื่อง

คุณสมบัติหลักของ Docker Swarm:

  • Declarative Service Model — กำหนดว่าต้องการ container กี่ตัว, ใช้ image อะไร, expose port ไหนแล้ว Swarm จัดการให้
  • Self-healing — ถ้า container ตาย Swarm สร้างตัวใหม่ขึ้นมาแทนอัตโนมัติ
  • Built-in Load Balancing — กระจาย traffic ไปยัง container ทุกตัวอัตโนมัติผ่าน Routing Mesh
  • Rolling Updates — อัพเดท container ทีละตัวไม่ downtime
  • TLS Encryption — การสื่อสารระหว่าง node เข้ารหัสทั้งหมดโดยอัตโนมัติ

สถาปัตยกรรม Manager-Worker

Swarm Cluster ประกอบด้วย 2 ประเภทของ node:

ประเภทหน้าที่จำนวนแนะนำ
Manager Nodeควบคุม cluster, รับคำสั่ง, จัดการ scheduling, เก็บ state ของทั้ง cluster3 หรือ 5 (เลขคี่เสมอ)
Worker Nodeรัน container จริง, รับงานจาก Manager มาประมวลผลตามโหลดงาน

Manager node ใช้ Raft Consensus Algorithm ในการตัดสินใจร่วมกันถ้า Manager 1 ตัวล่มตัวอื่นเลือก leader ใหม่อัตโนมัติ — นี่คือเหตุผลที่ต้องใช้จำนวนคี่ (3, 5, 7) เพื่อให้ quorum ทำงานได้

ตัวอย่าง Production Setup ทั่วไป:

  • Manager 3 เครื่อง (รองรับ manager ล่มได้ 1 เครื่อง)
  • Worker 5-10 เครื่อง (ขยายตามโหลด)
  • แยก Manager ไม่ให้รัน application container — ใช้ --availability drain

เปรียบเทียบ Docker Swarm vs Kubernetes

คำถามที่คนถามบ่อยที่สุดคือ "ใช้ Swarm หรือ Kubernetes ดี?" — คำตอบขึ้นอยู่กับ context:

เนื้อหาเกี่ยวข้อง — อ่านต่อ: มาตรฐาน api คือ — ข้อมูลครบถ้วน 2026

หัวข้อDocker SwarmKubernetes
ความซับซ้อนง่ายเรียนรู้ 1-2 วันซับซ้อนเรียนรู้ 1-3 เดือน
Setupdocker swarm init จบต้อง kubeadm, etcd, CNI plugin
Scalingดีแต่ไม่มี auto-scalingมี HPA, VPA auto-scaling
Ecosystemเล็กใหญ่มาก (Helm, Istio, ArgoCD)
เหมาะกับทีมเล็ก, container ไม่เกิน 50ทีมใหญ่, container 100+
Learning Curveต่ำ — รู้ Docker ก็ใช้ได้สูง — ต้องเรียนหลาย concept ใหม่

สรุปง่ายๆ: ถ้าทีมคุณมี 3-5 คน, รัน app ไม่เกิน 20-30 service — Swarm เหมาะที่สุดเพราะ setup ง่ายและดูแลง่ายถ้าต้องการ enterprise-grade, auto-scaling, multi-cloud — ใช้ Kubernetes

ติดตั้งและ Init Swarm Cluster

สิ่งที่ต้องเตรียม:

  • Server 3 เครื่องขึ้นไป (Ubuntu 22.04+ หรือ AlmaLinux 9)
  • Docker Engine 24.0+ ติดตั้งทุกเครื่อง
  • Port ที่ต้องเปิด: 2377/tcp (cluster management), 7946/tcp+udp (node communication), 4789/udp (overlay network)

Step 1: Init Swarm บน Manager เครื่องแรก

แนะนำเพิ่มเติม — XM Signal

บน Manager-1 (IP: 192.168.1.10)

docker swarm init --advertise-addr 192.168.1.10

Output จะให้ token สำหรับ join

Swarm initialized: current node (abc123) is now a manager.

docker swarm join --token SWMTKN-1-xxxxx 192.168.1.10:2377

เนื้อหาเกี่ยวข้อง — ดูเพิ่มเติมเรื่อง Docker Multi-stage Build Message Queue Design

Step 2: Join Worker Nodes

บน Worker-1, Worker-2

docker swarm join --token SWMTKN-1-xxxxx 192.168.1.10:2377

ตรวจสอบ node ทั้งหมด (รันบน Manager)

docker node ls

แนะนำเพิ่มเติม — อีบุ๊กการลงทุน SiamCafeBook

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

abc123 * manager-1 Ready Active Leader

def456 worker-1 Ready Active

เนื้อหาเกี่ยวข้อง — PHP Pest Testing Serverless Architecture

ghi789 worker-2 Ready Active

Step 3: เพิ่ม Manager เพิ่มเติม (สำหรับ HA)

# ดู token สำหรับ manager

docker swarm join-token manager



# บน Manager-2, Manager-3

docker swarm join --token SWMTKN-1-manager-token 192.168.1.10:2377

Deploy Service จริง Step-by-Step

Docker Swarm คืออะไร — คู่มือ Container

ตัวอย่าง deploy Nginx web server 3 replicas:

# สร้าง service

docker service create \

 --name web \

 --replicas 3 \

 --publish published=80, target=80 \

 nginx:alpine



# ตรวจสอบ

docker service ls

# ID NAME MODE REPLICAS IMAGE

# abc123 web replicated 3/3 nginx:alpine



# ดูว่า container กระจายไปเครื่องไหน

docker service ps web

ตัวอย่าง Deploy แบบ Stack (docker-compose สำหรับ Swarm):

# docker-stack.yml

version: '3.8'

services:

 web:

 image: nginx:alpine

 deploy:

 replicas: 3

 update_config:

 parallelism: 1

 delay: 10s

 restart_policy:

 condition: on-failure

 ports:

 - "80:80"

 networks:

 - webnet



 redis:

 image: redis:alpine

 deploy:

 replicas: 1

 placement:

 constraints:

 - node.role == manager

 networks:

 - webnet



networks:

 webnet:

 driver: overlay



# Deploy

docker stack deploy -c docker-stack.yml myapp

docker stack services myapp

Scaling, Rolling Update, Rollback

Scaling (เพิ่ม-ลด container)

# Scale จาก 3 เป็น 10 replicas

docker service scale web=10



# ลดกลับเป็น 5

docker service scale web=5

Rolling Update (อัพเดทแบบไม่ downtime)

# อัพเดท image จาก nginx:1.24 เป็น nginx:1.25

docker service update --image nginx:1.25 web



# กำหนด update strategy

docker service update \

 --update-parallelism 2 \

 --update-delay 10s \

 --update-failure-action rollback \

 web

Rollback (ย้อนกลับ)

# ถ้า update มีปัญหา — rollback ทันที

docker service rollback web

Swarm จะเก็บ previous version ไว้ถ้า update ใหม่ container fail เกินจำนวนที่กำหนดจะ rollback อัตโนมัติ

เนื้อหาเกี่ยวข้อง — ทำความเข้าใจ XDR Platform Community Building

Networking ใน Swarm

Docker Swarm สร้าง network พิเศษ 2 ประเภท:

  • Ingress Network — เป็น overlay network อัตโนมัติใช้สำหรับ routing mesh ที่กระจาย external traffic ไปยัง container ที่รันอยู่ทุก node
  • Custom Overlay Network — สร้างเองสำหรับ service-to-service communication ข้าม node

Routing Mesh ทำงานอย่างไร: เมื่อ request มาที่ port 80 ของ node ใดก็ได้ ใน cluster — Swarm จะ route ไปยัง container ที่รัน service นั้นอัตโนมัติแม้ว่า node นั้นจะไม่ได้รัน container ก็ตาม

# สร้าง custom overlay network

docker network create --driver overlay --attachable my-network



# ใช้กับ service

docker service create --name api --network my-network myapi:latest

docker service create --name db --network my-network postgres:15

Security: TLS, Secrets, Config

Docker Swarm มีระบบ security ในตัวที่ดีมาก:

Mutual TLS (mTLS) — node ทุกตัวสื่อสารกันผ่าน TLS อัตโนมัติ certificate rotate ทุก 90 วัน (ปรับได้)

# ปรับ certificate rotation

docker swarm update --cert-expiry 720h

Docker Secrets — เก็บ password, API key, certificate อย่างปลอดภัยไม่ต้อง hardcode ใน image

# สร้าง secret

echo "MySecretPassword123" | docker secret create db_password -



# ใช้ใน service

docker service create \

 --name db \

 --secret db_password \

 postgres:15



# Secret จะอยู่ที่ /run/secrets/db_password ใน container

Docker Config — คล้าย secret แต่สำหรับ config file ที่ไม่ sensitive

# สร้าง config จากไฟล์

docker config create nginx_conf ./nginx.conf



# ใช้ใน service

docker service create \

 --name web \

 --config source=nginx_conf, target=/etc/nginx/nginx.conf \

 nginx:alpine

Production Best Practices

  1. Manager Node จำนวนคี่เสมอ — ใช้ 3 สำหรับ cluster เล็ก, 5 สำหรับ cluster ใหญ่ห้ามใช้มากกว่า 7
  2. แยก Manager ไม่ให้รัน workload — ใช้ docker node update --availability drain manager-1
  3. ใช้ Placement Constraints — กำหนดว่า service ไหนรันบน node ไหนเช่น database รันเฉพาะเครื่อง SSD
  4. Health Check ทุก service — กำหนด --health-cmd เพื่อให้ Swarm ตรวจสอบ container อัตโนมัติ
  5. Resource Limits — กำหนด CPU/Memory limit ป้องกัน container กิน resource เกิน
  6. Log Aggregation — ใช้ logging driver ส่ง log ไป centralized system (ELK, Loki)
  7. Backup Swarm State — backup /var/lib/docker/swarm/ เป็นประจำ
  8. Monitoring — ใช้ Prometheus + Grafana ดู metrics ทั้ง cluster

Q: Docker Swarm ยังมีคนใช้อยู่ไหมในปี 2026?

A: ใช้ครับโดยเฉพาะทีมขนาดเล็กถึงกลางที่ไม่ต้องการความซับซ้อนของ Kubernetes Docker ยังคง support Swarm Mode อยู่และมีข้อได้เปรียบเรื่องความง่ายในการ setup

XM Legend · เทรดเดอร์ & ผู้สอน Forex 13 ปี

ผู้ก่อตั้ง SiamCafe ตั้งแต่ปี 1997 · เทรดเดอร์สาย Forex มากกว่า 13 ปี ได้รับการยกย่องเป็น XM Legend · แบ่งปันความรู้ Forex, ไอที, AI และการเทรด จากประสบการณ์จริงในตลาดจริง