Docker เบื้องต้นสำหรับ SysAdmin คู่มือฉบับสมบูรณ์ 2026

SiamCafe.net Since 1997 | 19/02/2026

สารบัญ

Docker คืออะไร

Docker เป็นแพลตฟอร์ม containerization ที่ช่วยให้ pack แอปพลิเคชันพร้อม dependencies ทั้งหมดลงใน container ที่สามารถรันได้ทุกที่ ไม่ว่าจะเป็น laptop, server, หรือ cloud

ก่อนมี Docker ปัญหาที่พบบ่อยคือ "It works on my machine" — แอปทำงานได้บนเครื่อง dev แต่พัง deploy Docker แก้ปัญหานี้โดยทำให้ environment เหมือนกันทุกที่

คำศัพท์สำคัญ:

Docker vs Virtual Machine

เกณฑ์Docker ContainerVirtual Machine
Boot Timeวินาทีนาที
SizeMBGB
RAM Usageต่ำสูง
IsolationProcess levelHardware level
OSแชร์ kernel กับ hostมี OS เต็ม
Performanceใกล้เคียง nativeช้ากว่า 5-20%

ติดตั้ง Docker บน Ubuntu

# ลบ Docker เก่า (ถ้ามี)
sudo apt remove docker docker-engine docker.io containerd runc

# ติดตั้ง dependencies
sudo apt update
sudo apt install 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

# เพิ่ม Docker repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list

# ติดตั้ง Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

# เพิ่ม user เข้ากลุ่ม docker
sudo usermod -aG docker $USER

# ทดสอบ
docker run hello-world

คำสั่ง Docker พื้นฐาน

# ดู images
docker images

# ดู containers ที่รันอยู่
docker ps
docker ps -a  # รวมที่หยุดแล้ว

# รัน container
docker run -d --name myapp -p 8080:80 nginx

# หยุด/เริ่ม container
docker stop myapp
docker start myapp

# ดู logs
docker logs myapp
docker logs -f myapp  # follow

# เข้าไปใน container
docker exec -it myapp bash

# ลบ container
docker rm myapp

# ลบ image
docker rmi nginx

Dockerfile เขียนยังไง

# Dockerfile สำหรับ Python app
FROM python:3.12-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 8000

CMD ["python", "app.py"]
# Build image
docker build -t myapp:1.0 .

# รัน
docker run -d -p 8000:8000 myapp:1.0

Docker Compose

Docker Compose ช่วยจัดการ multi-container application:

# docker-compose.yml
version: "3.8"
services:
  web:
    build: .
    ports:
      - "8000:8000"
    depends_on:
      - db
      - redis
    environment:
      - DATABASE_URL=mysql://root:pass@db/myapp
  
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: pass
      MYSQL_DATABASE: myapp
    volumes:
      - db_data:/var/lib/mysql
  
  redis:
    image: redis:7-alpine

volumes:
  db_data:
# รัน
docker compose up -d

# หยุด
docker compose down

# ดู logs
docker compose logs -f

Docker Networking

Network Types:

# สร้าง network
docker network create mynet

# รัน container ใน network
docker run -d --network mynet --name web nginx
docker run -d --network mynet --name db mysql:8.0

# containers ใน network เดียวกันสื่อสารกันได้ด้วยชื่อ
# web สามารถเชื่อมต่อ db ด้วย hostname "db"

Docker Volume

Volume ใช้เก็บข้อมูลถาวร (persistent data):

# สร้าง volume
docker volume create mydata

# ใช้ volume
docker run -d -v mydata:/var/lib/mysql mysql:8.0

# Bind mount (map directory จาก host)
docker run -d -v /host/path:/container/path nginx

# ดู volumes
docker volume ls
docker volume inspect mydata

อ่านเพิ่มเติม: Ubuntu Server 2026 | Python Automation | AI อนาคตการเทรด | Passive Income จาก AI

Best Practices

1. ใช้ official images: เลือก image จาก Docker Hub ที่มี "Official Image" badge

2. ใช้ specific tag: อย่าใช้ :latest ใช้ version เฉพาะ เช่น python:3.12-slim

3. Multi-stage build: ลดขนาด image โดยแยก build stage กับ runtime stage

4. .dockerignore: ไม่ copy ไฟล์ที่ไม่จำเป็นเข้า image

5. Non-root user: อย่ารัน container ด้วย root ใช้ USER directive ใน Dockerfile

6. Health check: เพิ่ม HEALTHCHECK ใน Dockerfile เพื่อตรวจสอบว่า container ยังทำงานปกติ

สรุป

Docker เป็นเครื่องมือที่ SysAdmin ทุกคนต้องรู้ในปี 2026 ช่วยให้ deploy แอปได้เร็ว เสถียร และ reproducible เริ่มจากคำสั่งพื้นฐาน แล้วค่อยเรียนรู้ Dockerfile, Docker Compose, Networking, และ Volume

คำถามที่พบบ่อย (FAQ)

Q: Docker ฟรีไหม?

A: Docker Engine (CE) ฟรี 100% Docker Desktop ฟรีสำหรับบุคคลและบริษัทเล็ก (< 250 คน, รายได้ < $10M) บริษัทใหญ่ต้องซื้อ license

Q: Docker กับ Kubernetes ต่างกันยังไง?

A: Docker ใช้สร้างและรัน container Kubernetes ใช้จัดการ container จำนวนมาก (orchestration) ถ้ามี container ไม่กี่ตัว Docker Compose เพียงพอ ถ้ามีหลายสิบตัวขึ้นไป ใช้ Kubernetes

Q: Docker ปลอดภัยไหม?

A: ปลอดภัยถ้าตั้งค่าถูกต้อง อย่ารัน container ด้วย root ใช้ official images อัพเดท images สม่ำเสมอ scan images ด้วย Trivy หรือ Snyk

Q: Docker ใช้ RAM เยอะไหม?

A: Docker Engine ใช้ RAM น้อยมาก (50-100MB) แต่ container แต่ละตัวจะใช้ RAM ตามแอปที่รัน เช่น MySQL container ใช้ 200-500MB, Nginx ใช้ 10-50MB

Q: ต้องเรียน Docker นานแค่ไหน?

A: พื้นฐาน (run, build, compose) เรียนได้ใน 1-2 สัปดาห์ ระดับกลาง (networking, volume, multi-stage build) 1-2 เดือน ระดับสูง (Kubernetes, CI/CD) 3-6 เดือน