Home » Docker Kubernetes คู่มือ Container สำหรับองค์กร
Docker Kubernetes คู่มือ Container สำหรับองค์กร
Container คืออะไร? ทำไมองค์กรต้องใช้ Docker และ Kubernetes
Container คือ วิธีบรรจุ Application พร้อม Dependencies ทั้งหมดไว้ในแพ็คเกจเดียว รันได้ทุกที่ ไม่ว่าจะบน Laptop, Server หรือ Cloud Docker เป็นเครื่องมือสร้างและรัน Container ที่นิยมที่สุด Kubernetes (K8s) เป็นระบบจัดการ Container จำนวนมาก Container ช่วยให้ Deploy Application เร็วขึ้น Scale ง่ายขึ้น และทำงานเหมือนกันทุก Environment ไม่มีปัญหา “ที่เครื่องผมมันทำงานได้”
Container vs Virtual Machine
| คุณสมบัติ |
Container |
Virtual Machine |
| ขนาด |
10-100 MB |
1-10 GB |
| เริ่มต้น |
วินาที |
นาที |
| OS |
แชร์ Host OS Kernel |
มี OS เต็มของตัวเอง |
| Isolation |
Process Level |
Hardware Level (แข็งแกร่งกว่า) |
| Performance |
ใกล้ Native |
Overhead จาก Hypervisor |
| Density |
รันได้ 10-100 Container/Server |
รันได้ 5-20 VM/Server |
| เหมาะกับ |
Microservices, Web App, CI/CD |
Legacy App, Windows Server |
Docker — สร้างและรัน Container
Docker Components
- Dockerfile: ไฟล์กำหนดวิธีสร้าง Container Image เหมือนสูตรอาหาร
- Image: Template ที่สร้างจาก Dockerfile ไม่เปลี่ยนแปลง
- Container: Instance ที่รันจาก Image เหมือน Process
- Docker Hub: Registry เก็บ Image สาธารณะ เช่น nginx, mysql, wordpress
- Docker Compose: ไฟล์กำหนดว่ารัน Container หลายตัวพร้อมกันอย่างไร
คำสั่ง Docker พื้นฐาน
| คำสั่ง |
ใช้ทำ |
docker pull nginx |
ดาวน์โหลด Image จาก Docker Hub |
docker run -d -p 80:80 nginx |
รัน Container จาก Image |
docker ps |
ดู Container ที่กำลังรัน |
docker stop [id] |
หยุด Container |
docker build -t myapp . |
สร้าง Image จาก Dockerfile |
docker-compose up -d |
รัน Multi-container จาก docker-compose.yml |
Kubernetes (K8s) — จัดการ Container จำนวนมาก
- Pod: หน่วยเล็กที่สุดใน K8s รัน 1 หรือหลาย Container
- Deployment: กำหนดว่าจะรัน Pod กี่ตัว Image อะไร อัปเดตอย่างไร
- Service: Expose Pod ให้เข้าถึงได้ Load Balance อัตโนมัติ
- Ingress: Reverse Proxy สำหรับ HTTP/HTTPS Traffic เข้า Cluster
- Namespace: แยก Environment เช่น dev, staging, production
- Auto-scaling: เพิ่ม/ลด Pod อัตโนมัติตาม CPU/Memory Usage
Kubernetes Distributions
| Distribution |
เหมาะกับ |
ราคา |
| K3s |
SMB, Edge, Lab (เบามาก) |
ฟรี |
| MicroK8s |
Dev/Test, Single Node |
ฟรี |
| Rancher (RKE2) |
SMB-Enterprise จัดการง่าย |
ฟรี / $$ |
| EKS (AWS) |
Enterprise บน AWS |
$0.10/ชม. + EC2 |
| AKS (Azure) |
Enterprise บน Azure |
ฟรี Control Plane + VM |
| GKE (Google) |
Enterprise บน GCP |
ฟรี 1 Cluster + VM |
Use Cases สำหรับองค์กร
- Web Application: รัน Web App ใน Container Deploy เร็ว Scale ง่าย
- Microservices: แยก Application เป็นส่วนเล็กๆ แต่ละส่วนเป็น Container
- CI/CD Pipeline: Build Test Deploy อัตโนมัติ ด้วย Container
- Development Environment: ทุกคนในทีมใช้ Environment เดียวกัน จาก Docker Compose
- Self-hosted Tools: รัน Gitea, Nextcloud, Zabbix, Pi-hole บน Docker
Container Security
- Official Image: ใช้ Image จาก Official Repository ไม่ใช้ Image ไม่รู้ที่มา
- Scan Image: สแกน Image หา Vulnerability ก่อน Deploy ใช้ Trivy หรือ Snyk
- Non-root: รัน Container ด้วย Non-root User ไม่ใช้ root
- Read-only: Mount Filesystem แบบ Read-only ถ้า Container ไม่ต้องเขียน
- Network Policy: จำกัด Network ระหว่าง Container ไม่ให้คุยกันทุกตัว
- อัปเดต: อัปเดต Base Image สม่ำเสมอ แก้ช่องโหว่
Container Best Practices
- 1 Container = 1 Process: ไม่รันหลาย Service ใน Container เดียว
- Stateless: Container ควรเป็น Stateless เก็บ Data ใน Volume หรือ Database
- Small Image: ใช้ Alpine หรือ Distroless Base Image ขนาดเล็ก เร็ว ปลอดภัย
- .dockerignore: ไม่ Copy ไฟล์ที่ไม่จำเป็นเข้า Image
- Health Check: กำหนด Health Check ให้ทุก Container
- Logging: ส่ง Log ไป Centralized Log (ELK, Loki) ไม่เก็บใน Container
- Backup Volume: Backup Docker Volume/Persistent Volume สม่ำเสมอ
สรุป Docker Kubernetes — อนาคตของการ Deploy Application
Container เป็นมาตรฐานใหม่ของการ Deploy Application เริ่มจาก Docker สำหรับ Application เดี่ยว ใช้ Kubernetes เมื่อต้อง Scale หลายตัว เลือก K3s (ฟรี เบา) หรือ Cloud Managed (EKS AKS GKE) หากต้องการข้อมูลเพิ่มเติม ติดตามได้ที่ SiamLanCard.com