
ติดตั้งและใช้งาน Docker บน VPS Ubuntu เบื้องต้น
Docker คือเครื่องมือ Containerization ที่นักพัฒนาและ DevOps ทั่วโลกใช้กันอย่างแพร่หลาย การรัน Docker บน VPS ช่วยให้คุณ Deploy Application ได้รวดเร็ว ขยายระบบง่าย และจัดการ Environment ได้อย่างมีประสิทธิภาพ คู่มือนี้จะพาคุณตั้งแต่ความรู้พื้นฐานจนถึงการใช้งานจริงบน VPS Ubuntu
สารบัญ
Docker คืออะไร
Docker คือ Platform สำหรับสร้างและรัน Container ซึ่งเป็น Package ที่รวม Application, Library, และ Configuration ทั้งหมดไว้ด้วยกัน ทำให้ Application รันได้เหมือนกันทุก Environment ไม่ว่าจะเป็น Local, Staging, หรือ Production
หัวใจสำคัญของ Docker มี 3 อย่าง:
- Image — Blueprint หรือ Template ของ Application
- Container — Instance ที่รันจาก Image
- Registry — ที่เก็บ Image เช่น Docker Hub
ทำไมต้องใช้ Docker บน VPS
การรัน Application บน VPS แบบดั้งเดิมมีปัญหา เช่น Dependency Conflict, ยาก Scale, และยากในการ Migrate Docker แก้ปัญหาเหล่านี้ได้ทั้งหมด:
| ปัญหาแบบดั้งเดิม | Docker แก้ได้อย่างไร |
|---|---|
| Dependency conflict ระหว่าง App | แต่ละ Container มี Environment แยกกัน 100% |
| Deploy ยุ่งยาก ต้องตั้งค่าเยอะ | Deploy ด้วย docker run หรือ docker compose up |
| Scale ยาก ต้องติดตั้งใหม่ | Spin up Container ใหม่ได้ใน 10 วินาที |
| Dev/Prod แตกต่างกัน (It works on my machine) | Environment เหมือนกัน 100% ทุก Stage |
| Rollback ยาก | Switch Image version ได้ทันที |
ความต้องการของระบบ
ก่อนติดตั้ง Docker ตรวจสอบสเปค VPS ของคุณให้เพียงพอ:
| Component | ขั้นต่ำ | แนะนำ |
|---|---|---|
| OS | Ubuntu 20.04 LTS | Ubuntu 22.04 LTS หรือใหม่กว่า |
| RAM | 1 GB | 2 GB ขึ้นไป |
| Storage (SSD) | 10 GB ว่าง | 20 GB ขึ้นไป |
| CPU | 1 vCore | 2 vCore ขึ้นไป |
| Access | SSH Root/Sudo | User ที่มี sudo |
ขั้นตอนติดตั้ง Docker บน Ubuntu
วิธีที่ 1: ติดตั้งผ่าน apt (แนะนำ — ง่ายที่สุด)
# 1. อัปเดต package list
sudo apt update
# 2. ติดตั้ง Docker
sudo apt install -y docker.io
# 3. เปิดใช้งานและ Start Docker
sudo systemctl enable --now docker
# 4. ตรวจสอบว่า Docker ทำงาน
sudo systemctl status docker
# 5. เพิ่ม user ปัจจุบันเข้า docker group (ไม่ต้องใช้ sudo ทุกครั้ง)
sudo usermod -aG docker $USER
# 6. Logout แล้ว Login ใหม่ จากนั้นทดสอบ
docker run hello-world
วิธีที่ 2: ติดตั้ง Docker CE (Community Edition) เวอร์ชันล่าสุด
# ติดตั้ง dependencies
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
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 $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list
# ติดตั้ง Docker CE
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker --version และ docker compose version เพื่อยืนยัน
คำสั่ง Docker พื้นฐาน
คำสั่งที่ใช้บ่อยที่สุดใน Docker:
| คำสั่ง | ความหมาย | ตัวอย่าง |
|---|---|---|
docker pull | ดาวน์โหลด Image จาก Registry | docker pull nginx:latest |
docker run | สร้างและรัน Container จาก Image | docker run -d -p 80:80 nginx |
docker ps | ดู Container ที่กำลังรัน | docker ps -a (ดูทั้งหมด) |
docker stop | หยุด Container | docker stop my-container |
docker rm | ลบ Container | docker rm my-container |
docker images | ดู Image ทั้งหมด | docker images |
docker rmi | ลบ Image | docker rmi nginx:latest |
docker exec | รันคำสั่งใน Container ที่รันอยู่ | docker exec -it my-nginx bash |
docker logs | ดู Log ของ Container | docker logs -f my-container |
docker inspect | ดูข้อมูลละเอียดของ Container | docker inspect my-container |
ตัวอย่างจริง: รัน Nginx Web Server
# รัน Nginx บน port 8080
docker run -d --name my-nginx -p 8080:80 nginx:alpine
# ทดสอบ
curl http://localhost:8080
# ดู logs
docker logs my-nginx
# หยุดและลบ
docker stop my-nginx && docker rm my-nginx
Docker Compose คืออะไรและวิธีใช้
Docker Compose เป็นเครื่องมือสำหรับจัดการหลาย Container พร้อมกัน โดยกำหนดทุกอย่างในไฟล์ docker-compose.yml เดียว
ตัวอย่าง: WordPress + MySQL + Redis
version: '3.8'
services:
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: wordpress
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_NAME: wordpress
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: secret
redis:
image: redis:alpine
restart: always
volumes:
db_data:
รันด้วย docker compose up -d และหยุดด้วย docker compose down
ตัวอย่าง Use Case จริง
Docker บน VPS เหมาะกับงานหลากหลายประเภท:
- Web Application: Deploy Node.js, Python Flask, PHP Laravel ได้ภายในนาทีเดียว
- Database: รัน MySQL, PostgreSQL, MongoDB โดยไม่กระทบ System
- CI/CD Pipeline: ใช้ GitLab Runner หรือ Jenkins ใน Container
- Reverse Proxy: Nginx หรือ Traefik จัดการ Routing หลาย App บน VPS เดียว
- Game Server: Minecraft, Valheim Server ใน Container แยกกัน
- Monitoring: Prometheus + Grafana Stack ติดตั้งใน 2 คำสั่ง
ความปลอดภัย Docker บน VPS
Docker ช่วยเพิ่มความปลอดภัย แต่มีสิ่งที่ต้องระวัง:
- อย่ารัน Container ด้วย Root: ใช้
--userflag หรือกำหนด User ใน Dockerfile - ใช้ Official Image: Download จาก Docker Hub Official หรือ Verified Publisher เท่านั้น
- อัปเดต Image สม่ำเสมอ:
docker pull <image>บ่อยๆ เพื่อรับ Security Patch - จำกัด Resource: ใช้
--memoryและ--cpusป้องกัน Container กิน Resource เกิน - Firewall: ใช้ ufw ควบคู่กับ Docker เพราะ Docker bypass ufw โดย default
# จำกัด Memory และ CPU
docker run -d --name my-app --memory="512m" --cpus="0.5" my-image
# แก้ปัญหา Docker bypass ufw
# แก้ /etc/default/ufw: DEFAULT_FORWARD_POLICY="ACCEPT"
sudo ufw reload
คำถามที่พบบ่อย (FAQ)
Docker ต้องใช้ VPS สเปกขนาดไหน?
สำหรับ Docker เบื้องต้นแนะนำ RAM 1 GB และ CPU 1 Core ขึ้นไป ถ้ารัน Container หลายตัวควรใช้ RAM 2 GB ขึ้นไป
Docker กับ Virtual Machine ต่างกันอย่างไร?
Docker ใช้ Container ซึ่งแชร์ Kernel กับ Host ทำให้เบากว่า VM มาก VM ต้องรัน OS เต็มตัวจึงกินทรัพยากรมากกว่า Docker 10–20 เท่า
Docker Compose ต่างจาก Docker ปกติอย่างไร?
Docker Compose ช่วยจัดการหลาย Container พร้อมกันผ่านไฟล์ docker-compose.yml เหมาะสำหรับ Application ที่มีหลาย Service เช่น Web + Database + Cache
ติดตั้ง Docker บน Ubuntu ต้องใช้คำสั่งอะไร?
ใช้คำสั่ง: sudo apt update && sudo apt install -y docker.io && sudo systemctl enable --now docker จากนั้นเพิ่มตัวเองเข้า docker group ด้วย sudo usermod -aG docker $USER
Docker Image กับ Docker Container ต่างกันอย่างไร?
Docker Image คือ Template หรือ Blueprint ที่ใช้สร้าง Container ส่วน Docker Container คือ Instance ที่รันจาก Image นั้น Image 1 อันสามารถสร้าง Container ได้หลายตัว
สรุป
Docker บน VPS Ubuntu เปิดโลกการ Deploy Application ที่รวดเร็ว ยืดหยุ่น และจัดการได้ง่าย ด้วยขั้นตอนง่ายๆ เพียง apt install docker.io คุณก็พร้อมรัน Container ได้ทันที
สิ่งที่คุณได้เรียนรู้วันนี้: ติดตั้ง Docker, คำสั่งพื้นฐาน, Docker Compose สำหรับ Multi-Container, Use Case จริง และแนวทางความปลอดภัย
ต้องการ VPS สำหรับรัน Docker?
VPS AsiaGB ไทย — SSD, Uptime 99%, ควบคุมด้วย DirectAdmin ราคาเริ่ม 500 บาท/เดือน
ดูแพ็กเกจ VPS ไทย