Docker เป็นเทคโนโลยี Container ที่เปลี่ยนวิธีการ Deploy และจัดการแอปพลิเคชันอย่างสิ้นเชิง สำหรับ SysAdmin ในปี 2026 Docker ไม่ใช่แค่เครื่องมือเสริมอีกต่อไป แต่เป็นทักษะพื้นฐานที่ต้องมี ในคู่มือนี้เราจะอธิบายทุกอย่างตั้งแต่พื้นฐานไปจนถึงการใช้งานจริงใน Production
Docker เป็นแพลตฟอร์ม Open Source สำหรับสร้าง แจกจ่าย และรัน Container ซึ่ง Container เป็นสภาพแวดล้อมที่แยกจากระบบหลัก (Isolated Environment) บรรจุแอปพลิเคชันพร้อมทุก Dependency ที่จำเป็น ทำให้แอปทำงานได้เหมือนกันทุกที่ ไม่ว่าจะเป็นเครื่อง Developer, Staging Server หรือ Production Server
Docker ใช้เทคโนโลยี Linux Kernel เช่น cgroups และ namespaces ในการแยก Container ออกจากกัน แต่ละ Container แชร์ Kernel เดียวกับ Host ทำให้เบากว่า Virtual Machine มาก Boot ได้ในเวลาเพียงวินาที และใช้ทรัพยากรน้อยกว่า VM หลายเท่า
| คุณสมบัติ | Docker Container | Virtual Machine |
|---|---|---|
| เวลา Boot | วินาที | นาที |
| ขนาด | MB (10-500MB) | GB (2-20GB) |
| ใช้ RAM | เฉพาะที่แอปต้องการ | ต้องจองไว้ล่วงหน้า |
| Isolation | Process Level | Full OS Level |
| Overhead | ต่ำมาก | สูง (Hypervisor) |
| Portability | สูงมาก | ปานกลาง |
| เหมาะกับ | Microservices, CI/CD | Legacy App, Full OS |
Docker ไม่ได้มาแทนที่ VM แต่ใช้ร่วมกันได้ดี หลายองค์กรรัน Docker บน VM อีกชั้นหนึ่งเพื่อความยืดหยุ่น เช่น รัน Docker บน Proxmox VM สำหรับผู้สนใจ Virtualization สามารถศึกษาเพิ่มเติมที่ Proxmox vs ESXi เปรียบเทียบ
ขั้นตอนติดตั้ง Docker Engine บน Ubuntu 22.04/24.04:
# อัพเดตและติดตั้ง Dependencies sudo apt update sudo apt install -y ca-certificates curl gnupg # เพิ่ม 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 # เพิ่ม 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 # ติดตั้ง Docker sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin # เพิ่ม User เข้ากลุ่ม docker (ไม่ต้อง sudo) sudo usermod -aG docker $USER
สำหรับ CentOS/RHEL ใช้ yum แทน apt และเพิ่ม repo จาก Docker official สำหรับ Windows และ Mac ให้ดาวน์โหลด Docker Desktop จากเว็บไซต์ Docker
# รัน Container ใหม่ docker run -d --name myapp -p 8080:80 nginx # ดู Container ที่กำลังทำงาน docker ps # ดู Container ทั้งหมด (รวมที่หยุด) docker ps -a # หยุด Container docker stop myapp # ลบ Container docker rm myapp # ดู Log docker logs -f myapp # เข้าไปใน Container docker exec -it myapp /bin/bash
# ดาวน์โหลด Image docker pull ubuntu:22.04 # ดู Image ที่มี docker images # ลบ Image docker rmi ubuntu:22.04 # ลบ Image ที่ไม่ใช้ docker image prune -a
# ดู CPU/Memory ที่ Container ใช้ docker stats # ดูรายละเอียด Container docker inspect myapp # ดู Disk ที่ Docker ใช้ docker system df
Dockerfile คือไฟล์ที่กำหนดวิธีสร้าง Docker Image ตัวอย่าง Dockerfile สำหรับ Node.js Application:
FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . EXPOSE 3000 USER node CMD ["node", "server.js"]
Best Practices สำหรับเขียน Dockerfile:
Docker Compose ช่วยจัดการแอปที่มีหลาย Container พร้อมกัน ตัวอย่าง docker-compose.yml สำหรับ WordPress:
version: '3.8'
services:
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wp
WORDPRESS_DB_PASSWORD: secret123
WORDPRESS_DB_NAME: wordpress
volumes:
- wp_data:/var/www/html
depends_on:
- db
restart: unless-stopped
db:
image: mariadb:10.11
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wordpress
MYSQL_USER: wp
MYSQL_PASSWORD: secret123
volumes:
- db_data:/var/lib/mysql
restart: unless-stopped
volumes:
wp_data:
db_data:
คำสั่ง Docker Compose ที่ใช้บ่อย:
docker compose up -d # รัน Stack docker compose down # หยุดและลบ Stack docker compose logs -f # ดู Log docker compose ps # ดูสถานะ docker compose pull # อัพเดต Image docker compose restart # Restart ทั้ง Stack
Docker มี Network Driver หลายแบบ:
แนะนำให้สร้าง Custom Bridge Network แทนการใช้ Default Bridge เพราะ Custom Network รองรับ DNS Resolution ระหว่าง Container ทำให้อ้างถึงกันด้วยชื่อได้
Container เป็น Ephemeral คือเมื่อลบแล้วข้อมูลข้างในจะหายไป Docker Volumes ช่วยเก็บข้อมูลถาวรนอก Container มี 3 แบบ:
สำหรับ Production ควรใช้ Named Volume และ Backup ข้อมูลสม่ำเสมอ วิธี Backup Docker Volume ง่ายที่สุดคือ:
docker run --rm -v mydata:/source -v /backup:/backup alpine tar czf /backup/mydata-$(date +%Y%m%d).tar.gz -C /source .
Docker Security เป็นเรื่องสำคัญที่ SysAdmin ต้องใส่ใจ:
สำหรับ Production Environment มีสิ่งที่ต้องพิจารณาเพิ่มเติม:
ตั้ง Log Driver ให้เหมาะสม เช่น json-file พร้อม max-size และ max-file เพื่อป้องกัน Disk เต็ม หรือใช้ Fluentd/Loki สำหรับ Centralized Logging
ใช้ cAdvisor ร่วมกับ Prometheus และ Grafana ในการ Monitor Container Performance ทั้ง CPU Memory Network และ Disk I/O
สร้าง Backup Script สำหรับ Volume ทั้งหมด ทำ Backup ไปยัง NAS หรือ Cloud Storage อย่างน้อยวันละครั้ง ทดสอบ Restore สม่ำเสมอ
ใช้ Watchtower หรือ Diun สำหรับแจ้งเตือนเมื่อมี Image ใหม่ ทดสอบ Image ใหม่ใน Staging ก่อน Deploy ไป Production ใช้ Docker Image Tag เฉพาะ (เช่น nginx:1.25.3) แทน latest
สำหรับผู้ที่สนใจการเทรด Forex สามารถใช้ Docker รัน EA หรือ Trading Bot บน VPS ได้อย่างมีประสิทธิภาพ ศึกษาเพิ่มเติมเกี่ยวกับการเทรดได้ที่ iCafeForex สอนเทรด Forex ฟรี
Docker Desktop ฟรีสำหรับบุคคล การศึกษา และธุรกิจขนาดเล็ก (พนักงานน้อยกว่า 250 คน รายได้น้อยกว่า 10 ล้านดอลลาร์ต่อปี) องค์กรใหญ่ต้องซื้อ Subscription ส่วน Docker Engine บน Linux ฟรีทั้งหมด
Podman เป็นทางเลือกแทน Docker ที่ไม่ต้องใช้ Daemon รันด้วย Rootless ได้โดย Default คำสั่งเกือบเหมือน Docker ทุกประการ เหมาะสำหรับผู้ที่ต้องการ Security ที่สูงกว่า
Docker Swarm ง่ายกว่ามาก ติดตั้งและจัดการง่าย เหมาะสำหรับ SME ที่มี Container ไม่เกิน 50 ตัว Kubernetes ซับซ้อนกว่าแต่ทรงพลังกว่า เหมาะสำหรับองค์กรขนาดใหญ่ที่ต้องการ Auto-scaling
Docker เป็นเครื่องมือที่ SysAdmin ในปี 2026 ต้องเชี่ยวชาญ ด้วยความสามารถในการ Deploy แอปอย่างรวดเร็ว จัดการ Environment ให้สม่ำเสมอ และประหยัดทรัพยากร Docker จะช่วยให้การทำงานของคุณมีประสิทธิภาพมากขึ้น เริ่มต้นจากการติดตั้ง Docker รัน Container แรก แล้วค่อยเรียนรู้ Dockerfile และ Compose ทีละขั้น ภายในไม่กี่สัปดาห์คุณจะใช้ Docker ได้อย่างมั่นใจ