🐳

Docker คืออะไร?

Platform Container ที่แพ็กแอปพร้อม dependencies เข้าด้วยกัน Build ครั้งเดียว รันได้ทุกที่ สภาพแวดล้อมเหมือนกันเสมอ

Solomon Hykes2013Go LanguageApache 2.0Linux Containers

🔄 Docker Flow: Code → Container → Cloud

เครื่อง Dev📄 app.js📄 package.json📄 Dockerfile📄 .dockerignoredocker build .build🐳Docker ImageLayers (อ่านอย่างเดียว)OS layerRuntime (Node)DependenciesApp codeOS layerRuntime (Node)DependenciesApp coderun📦ContainerInstance ที่รันProcess ที่แยกMap PortMount Volume:3000 → 3000🏗️Docker Composeหลาย Container☁️Registry (Docker Hub)✅ Build ครั้งเดียว → รันได้ทุกที่ สภาพแวดล้อมเหมือนกันทุกเครื่อง

📋 ขั้นตอนการทำงาน Docker

1
📄Developer
เขียน Dockerfile กำหนด Base image, Copy code, ติดตั้ง dependencies, Expose port
2
🔨Docker CLI
docker build -t myapp:1.0 . → อ่าน Dockerfile → สร้าง Image แบบ Layer
3
🏗️Docker Engine
แต่ละคำสั่ง (RUN, COPY, ADD) สร้าง Layer แบบอ่านอย่างเดียว Layer ถูก Cache เพื่อความเร็ว
4
☁️Docker Registry
docker push myapp:1.0 → Upload Image ไปยัง Docker Hub / GitHub Container Registry / ECR
5
📥Server / CI
docker pull myapp:1.0 → Download Image บนเครื่องใดก็ได้ (Dev / Staging / Production)
6
📦Docker Engine
docker run -p 3000:3000 -d myapp:1.0 → สร้าง Container จาก Image → เริ่ม Process
7
🔒Container
Process ที่แยกออกมา มี filesystem, network, environment variables เป็นของตัวเอง ใช้ Kernel ของ Host
8
🏗️Docker Compose
docker-compose up → เริ่มหลาย Container พร้อมกัน (app + db + redis + nginx)
9
🚀Kubernetes (K8s)
Orchestrate Container ขนาดใหญ่: Auto-scaling, Load balancing, Self-healing, Rolling update

⌨️ คำสั่ง Docker ที่ใช้บ่อย

docker build -t name:tag .Build image จาก Dockerfile ในโฟลเดอร์ปัจจุบัน
docker run -p 3000:3000 -d nameรัน Container, Map port, โหมด Detached
docker psแสดง Container ที่รันอยู่ทั้งหมด
docker logs container_idดู Log stdout/stderr ของ Container
docker exec -it id bashเปิด Shell ใน Container ที่รันอยู่
docker-compose up -dเริ่ม Service ทั้งหมดจาก docker-compose.yml
docker push registry/name:tagPush Image ไปยัง Docker Registry
docker system pruneลบ Image, Container, Volume ที่ไม่ใช้

🎯 ทำไมต้องใช้ Docker?

ความสม่ำเสมอ

"ทำงานบนเครื่องฉันนะ" ไม่มีอีกแล้ว Container เดียวกันทำงานเหมือนกันทั้ง Dev, Staging, Production

🔒
การแยก

แต่ละ Service รันใน Container ของตัวเอง ไม่มีปัญหา Dependency ขัดแย้งกัน

🚀
Deploy เร็ว

Image สร้างไว้แล้ว Deploy แค่ Pull และรัน Container ใช้เวลาไม่กี่วินาที

📈
Scalability

รัน Container หลาย Instance หลัง Load balancer Scale แนวนอนได้ง่าย

⏮️
Rollback

Tag Image ตาม Version ย้อนกลับเวอร์ชันก่อนหน้าได้ทันทีหากมีปัญหา

🧩
Microservices

รันแต่ละ Service (auth, payment, notification) เป็น Container แยกกันอิสระ

ต้องการตั้งค่า Docker สำหรับ Deploy? 🐳

เราทำ Containerize แอปด้วย Docker ตั้งค่า CI/CD pipeline และ Deploy ขึ้น Cloud

← กลับหน้าเรียนติดต่อเรา