Docker สำหรับมือใหม่ เข้าใจง่าย DevOps

Docker สำหรับมือใหม่ เข้าใจง่าย

📅 2026-02-10 | โดย อ.บอม กิตติทัศน์ เจริญพนาสิทธิ์ — SiamCafe.net Since 1997

Docker คืออะไร ทำไมต้องใช้? (ฉบับคนทำร้านเน็ต)

น้องๆ เคยเจอไหม? สมัยผมทำร้านเน็ต SiamCafe.net เนี่ย (ตั้งแต่ปี 97 นะ!) ปัญหาโลกแตกคือโปรแกรมที่ร้านมันลงได้ ทำไมเอาไปลงเครื่องลูกค้าแล้ว error เฉยเลย! บางทีก็เรื่องเวอร์ชั่น library ไม่ตรงกัน, dependency ตีกันมั่วไปหมด ปวดหัวสุดๆ Docker เนี่ยแหละคือพระเอกที่เข้ามาช่วยแก้ปัญหานี้

Docker มันคือเทคโนโลยี Containerization ที่ทำให้เราแพ็คโปรแกรมของเราพร้อมทั้ง environment ที่มันต้องการ (พวก libraries, dependencies) ไปอยู่ใน "ตู้คอนเทนเนอร์" แล้วเอาไปรันที่ไหนก็ได้! ไม่ว่าจะเครื่องเรา, เครื่องเพื่อน, หรือบน Cloud มันก็จะทำงานเหมือนกันเป๊ะๆ เพราะทุกอย่างมันถูกห่อไว้หมดแล้ว

Docker ช่วยชีวิตคนทำร้านเน็ต (และ Developer ทุกคน) ยังไง?

สมัยก่อนตอนยังไม่มี Docker เวลาจะ deploy อะไรทีนึงนี่คือต้องมานั่ง configure server กันใหม่หมด ลง packages นู่นนี่นั่น กว่าจะรันได้แต่ละทีเสียเวลาเป็นวันๆ แถมมีโอกาสพลาดสูงมาก แต่ Docker ทำให้ชีวิตง่ายขึ้นเยอะ แค่ build image จาก Dockerfile แล้ว run container จบเลย!

เริ่มใช้งาน Docker แบบ Step-by-Step

ไม่ต้องกลัวว่ามันจะยากนะน้องๆ Docker ไม่ได้ยากอย่างที่คิด มาลองทำตาม step เหล่านี้กันเลย:

Step 1: ติดตั้ง Docker Desktop

อย่างแรกเลย ไปโหลด Docker Desktop มาติดตั้งก่อนเลย Docker Desktop มีให้ใช้ทั้ง Windows และ macOS (Linux ก็มี Docker Engine ให้ลงนะ)

Step 2: สร้าง Dockerfile

Dockerfile คือไฟล์ที่เราเขียน instruction ว่าเราต้องการให้ Docker build image ของเรายังไง ตัวอย่างง่ายๆ เช่น:


# ใช้ base image เป็น Ubuntu เวอร์ชั่นล่าสุด
FROM ubuntu:latest

# ติดตั้ง package ที่จำเป็น
RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip

# Copy ไฟล์โปรแกรมของเราเข้าไปใน container
COPY . /app

# เปลี่ยน working directory ไปที่ /app
WORKDIR /app

# ติดตั้ง dependencies จาก requirements.txt (ถ้ามี)
RUN pip3 install -r requirements.txt

# สั่งให้รันโปรแกรมเมื่อ container เริ่มทำงาน
CMD ["python3", "your_program.py"]

อธิบาย code ข้างบน:

Step 3: Build Docker Image

หลังจากที่เรามี Dockerfile แล้ว เราก็สามารถ build image ได้โดยใช้คำสั่งนี้:


docker build -t your_image_name .

your_image_name คือชื่อที่เราต้องการตั้งให้กับ image ของเรา (ตั้งให้มันสื่อความหมายหน่อยนะ จะได้จำง่ายๆ) ส่วน . หมายถึง Dockerfile อยู่ใน directory ปัจจุบัน

Step 4: Run Docker Container

พอเรา build image เสร็จแล้ว เราก็สามารถ run container ได้โดยใช้คำสั่งนี้:


docker run -d -p 8000:8000 your_image_name

อธิบาย code:

แค่นี้เอง! โปรแกรมของเราก็จะรันอยู่ใน Docker container แล้ว ลองเข้าไปดูที่ SiamCafe Blog อาจจะมีบทความที่เกี่ยวข้องเพิ่มเติมนะ

เปรียบเทียบ Docker กับ Virtual Machine (VM)

หลายคนอาจจะสงสัยว่า Docker มันต่างจาก Virtual Machine (VM) ยังไง? มาดูตารางเปรียบเทียบกัน:

คุณสมบัติ Docker Virtual Machine (VM)
ขนาด เล็กกว่า (MB) ใหญ่กว่า (GB)
Resource Utilization น้อยกว่า มากกว่า
Boot Time เร็วกว่า (วินาที) ช้ากว่า (นาที)
Isolation ระดับ Process ระดับ OS
Overhead ต่ำ สูง

สรุปง่ายๆ คือ Docker มัน lightweight กว่า VM เยอะ ใช้ resource น้อยกว่า และ boot เร็วกว่า เหมาะกับการทำ Microservices และ Continuous Integration/Continuous Deployment (CI/CD)

🎬 วิดีโอแนะนำ

ดูวิดีโอเพิ่มเติมเกี่ยวกับDocker สำหรับมือใหม่ เข้าใจง่า:

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

Docker Image กับ Container ต่างกันยังไง?

Docker image คือ blueprint หรือ template ส่วน container คือ instance ที่กำลัง run อยู่ของ image นั้น คิดง่ายๆ เหมือนพิมพ์เขียวบ้าน (image) กับบ้านที่สร้างเสร็จแล้ว (container)

จะ share Docker image ให้คนอื่นใช้ได้ยังไง?

วิธีที่ง่ายที่สุดคือ push image ของเราขึ้นไปบน Docker Hub (เหมือน GitHub สำหรับ Docker image) แล้วคนอื่นก็สามารถ pull image ของเรามาใช้ได้

Docker Compose คืออะไร?

Docker Compose เป็นเครื่องมือที่ช่วยให้เรา define และ manage multi-container applications ได้ง่ายขึ้น โดยเราจะเขียนไฟล์ docker-compose.yml เพื่อ define services ต่างๆ ที่อยู่ใน application ของเรา แล้ว Docker Compose จะจัดการ build และ run containers ให้เรา

หวังว่าบทความนี้จะช่วยให้น้องๆ เข้าใจ Docker มากขึ้นนะ ลองเอาไปประยุกต์ใช้กับงานของตัวเองดู รับรองชีวิตดีขึ้นเยอะ! อย่าลืมแวะไปอ่านบทความอื่นๆ ใน SiamCafe Blog ด้วยนะ

Best Practices การใช้ Docker ที่ควรรู้

1. สร้าง Docker Image ให้เล็กเข้าไว้

สมัยผมทำร้านเน็ตฯ สมัยก่อน bandwidth มันจำกัด Image ยิ่งเล็กยิ่งดี โหลดเร็ว deploy เร็ว ประหยัดเนื้อที่ด้วย

วิธีง่ายๆ คือใช้ base image ที่จำเป็นจริงๆ อย่าง Alpine Linux หรือ Distroless Image แล้วก็ Multi-stage build ช่วยลดขนาด Image ได้เยอะเลย


FROM node:16-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

2. อย่าเก็บความลับไว้ใน Docker Image

พวก API keys, passwords, database credentials อย่าใส่ไว้ใน Dockerfile เด็ดขาด! ใครได้ Image เราไปก็จบเห่

ใช้ Docker Secrets หรือ Environment Variables แทนดีกว่า ปลอดภัยกว่าเยอะ

3. ใช้ Docker Compose จัดการ Container หลายๆ ตัว

ถ้าโปรเจคเรามีหลาย Container เช่น web app, database, cache อย่ารัน Container แยกกันเลย มันวุ่นวาย

Docker Compose ช่วยจัดการให้ทุกอย่างง่ายขึ้น กำหนด dependencies, network, volume ในไฟล์เดียว จบ!


version: "3.9"
services:
  web:
    image: my-web-app
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: postgres:13
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password

4. หมั่นอัพเดท Docker Image

เหมือน Windows Update นั่นแหละ Docker Image ก็ต้องอัพเดทเหมือนกัน Security patch, bug fixes มาเรื่อยๆ

ใช้ Dependabot หรือ Snyk ช่วย scan vulnerabilities ใน Image เราได้ จะได้รู้ว่าต้องอัพเดทอะไรบ้าง

FAQ คำถามที่พบบ่อยเกี่ยวกับ Docker

Docker กับ Virtual Machine ต่างกันยังไง?

VM จำลองทั้ง OS หนักมาก Docker แชร์ Kernel กับ Host OS เบากว่าเยอะ เร็วกว่าด้วย สมัยผมทำร้านเน็ตฯ ถ้าใช้ VM คงเจ๊งไปแล้ว

Docker เหมาะกับงานแบบไหน?

Web application, microservices, CI/CD pipeline คือ use cases หลักๆ เลย Docker ช่วยให้ environment ทุกคนเหมือนกันหมด หมดปัญหา "ทำไมมันรันบนเครื่องผมได้" ซักที

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

Docker Compose เหมาะกับ development environment หรือ production ที่ scale ไม่ใหญ่มาก Kubernetes เหมาะกับ production scale ใหญ่ๆ ที่ต้องการ orchestration แบบ advanced พวก auto-scaling, rolling updates อะไรพวกนี้

ถ้าเป็นเมื่อก่อน สมัยผมทำร้านเกมส์ คงไม่ต้องใช้ Kubernetes หรอก Docker Compose ก็เหลือๆ

Docker Desktop ต้องจ่ายเงินด้วยเหรอ?

ใช่ Docker Desktop เปลี่ยน Licensing policy ไปแล้ว ถ้าใช้ในองค์กรใหญ่ๆ ต้องจ่ายเงิน แต่ถ้าใช้ส่วนตัว เรียนรู้ หรือธุรกิจขนาดเล็ก ยังใช้ฟรีได้อยู่

แต่ถ้าไม่อยากจ่ายเงิน ก็มีทางเลือกอื่น เช่น Rancher Desktop หรือ Podman

หาความรู้เรื่อง Docker เพิ่มเติมได้จากที่ไหน?

Docker documentation, SiamCafe Blog, Udemy, Coursera มีคอร์สดีๆ เยอะแยะเลย ลองหาดู

หรือถ้าอยากลงทุน forex ลองดู iCafeForex ก็ได้นะ :)

สรุป

Docker ไม่ได้ยากอย่างที่คิด ลองเล่นดูแล้วจะติดใจ มันช่วยให้ชีวิตเราง่ายขึ้นเยอะ

หวังว่าบทความนี้จะเป็นประโยชน์กับทุกคนนะครับ ถ้ามีคำถามอะไรเพิ่มเติม ถามมาได้เลย

📰 บทความล่าสุดจาก SiamCafe

📚 ดูบทความทั้งหมด — SiamCafe Blog

SiamCafe.net — แหล่งความรู้ด้าน IT, Network, Security, Programming อันดับ 1 ของไทย ก่อตั้งตั้งแต่ปี 1997 โดย อ.บอม ผู้เชี่ยวชาญด้าน IT Infrastructure และ Forex Trading มากกว่า 25 ปี บทความทุกชิ้นเขียนจากประสบการณ์จริงในวงการ IT ประเทศไทย

📰 บทความล่าสุดจาก SiamCafe

� ดูบทความทั้งหมด — SiamCafe Blog