ทำไม Docker ถึงเป็น Must-Have สำหรับ Server ยุคนี้
ผมเริ่มใช้ Docker ตั้งแต่ปี 2015 ตอนนั้นยังเป็นของใหม่ในไทย ลูกค้าส่วนใหญ่ยังใช้ VM แบบเต็มรูปแบบ แต่พอลองย้าย web app ของลูกค้า 3 ราย จาก VM มา Docker ค่า server ลดลง 40% ทันที เพราะ container กิน RAM น้อยกว่า VM มาก
ตอนนี้ปี 2026 ถ้าคุณยังไม่ใช้ Docker ถือว่าช้าไปแล้ว ผมจะสอนตั้งแต่ศูนย์จนรัน production ได้จริง
เตรียม Ubuntu Server
ผมแนะนำ Ubuntu 24.04 LTS เพราะ support ยาว 10 ปี ถ้าเป็น VPS แนะนำ RAM อย่างน้อย 2 GB สำหรับ Docker + 2-3 containers
# อัพเดท system ก่อน
sudo apt update && sudo apt upgrade -y
# ลบ Docker เวอร์ชันเก่า (ถ้ามี)
sudo apt remove docker docker-engine docker.io containerd runc 2>/dev/null
ติดตั้ง Docker Engine
# ติดตั้ง dependencies
sudo apt install -y ca-certificates curl gnupg lsb-release
# เพิ่ม Docker GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# เพิ่ม Docker repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# ติดตั้ง Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# เช็คว่าทำงานได้
sudo docker run hello-world
ถ้าเห็น "Hello from Docker!" แปลว่าสำเร็จแล้ว
ให้ user ปกติรัน Docker ได้ (ไม่ต้อง sudo)
sudo usermod -aG docker $USER
# ออกแล้วเข้าใหม่เพื่อให้ group มีผล
newgrp docker
ติดตั้ง Docker Compose
Docker Compose มาพร้อมกับ Docker Engine แล้วใน version ใหม่ ทดสอบด้วย:
docker compose version
# Docker Compose version v2.x.x
ตัวอย่างจริง: รัน WordPress + MySQL ด้วย Docker Compose
นี่คือ setup ที่ผมใช้ให้ลูกค้าหลายราย ง่ายกว่าติดตั้ง LAMP แบบเดิมเยอะมาก
# สร้าง directory
mkdir ~/wordpress && cd ~/wordpress
# สร้าง docker-compose.yml
cat > docker-compose.yml << 'EOF'
services:
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: secretpass123
MYSQL_DATABASE: wpdb
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppass456
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
restart: always
depends_on:
- db
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppass456
WORDPRESS_DB_NAME: wpdb
volumes:
- wp_data:/var/www/html
volumes:
db_data:
wp_data:
EOF
# รัน
docker compose up -d
เปิด browser ไปที่ http://your-server-ip:8080 จะเจอ WordPress installer ทันที ใช้เวลาไม่ถึง 2 นาที
คำสั่ง Docker ที่ใช้บ่อย
| คำสั่ง | ทำอะไร |
|---|---|
docker ps | ดู container ที่กำลังรัน |
docker ps -a | ดู container ทั้งหมด (รวมที่หยุด) |
docker logs <name> | ดู log ของ container |
docker exec -it <name> bash | เข้าไปข้างใน container |
docker compose up -d | รัน services ทั้งหมด |
docker compose down | หยุด + ลบ containers |
docker system prune -a | ลบ image/container ที่ไม่ใช้ |
Troubleshooting ปัญหาที่พบบ่อย
1. Permission denied — ลืมเพิ่ม user เข้า docker group ให้รัน sudo usermod -aG docker $USER แล้ว logout/login ใหม่
2. Port already in use — มี service อื่นใช้ port อยู่ เช็คด้วย sudo lsof -i :8080 แล้ว kill หรือเปลี่ยน port ใน compose
3. Disk full — Docker images กิน disk เยอะ รัน docker system prune -a เพื่อล้าง image เก่า ผมเคยเจอ server disk เต็มเพราะลืมล้าง images เก่าสะสมมา 6 เดือน หายไป 40 GB
FAQ
Q: Docker กับ VM ต่างกันยังไง?
VM จำลองทั้ง OS กิน RAM 1-4 GB ต่อตัว Docker แชร์ kernel ของ host กิน RAM แค่ 50-200 MB ต่อ container เร็วกว่า ประหยัดกว่า
Q: Docker เหมาะกับ production จริงไหม?
ใช้จริงครับ ผม deploy Docker ให้ลูกค้ามาแล้วกว่า 50 ระบบ stable มาก ถ้าจะ scale ใหญ่ขึ้น ดู Kubernetes ต่อ
Q: ควรใช้ Docker Desktop บน Windows ไหม?
สำหรับ dev ได้ แต่ production แนะนำ Linux เท่านั้น Docker บน Windows มี overhead จาก WSL2 ทำให้ช้ากว่า
สำหรับผู้ที่สนใจเรื่องการลงทุน สามารถศึกษาเพิ่มเติมได้ที่ iCafeForex.com