ข้ามไปเนื้อหาหลัก
คอนเทนเนอร์· ~14 นาที

Image, Dockerfile และ Registry

สร้างกล่องด้วย Dockerfile เก็บ/แชร์กล่องผ่าน registry

เปรียบเทียบให้เห็นภาพ

Dockerfile เหมือนสูตรอาหาร (บอกขั้นตอนทำทีละสเต็ป) · Image คืออาหารที่ทำเสร็จแช่แข็งไว้ · Registry คือตู้แช่กลาง (เช่น Docker Hub) ที่ใครก็มาหยิบ image ไปอุ่นรันต่อได้

Dockerfile — สูตรสร้าง image

Dockerfile คือไฟล์ข้อความที่บอกว่าจะประกอบ image ยังไง แต่ละบรรทัดสร้าง layer หนึ่งชั้น (Docker แคช layer ไว้ ทำให้ build ครั้งถัดไปเร็วขึ้น)

# 1) เริ่มจาก image ฐานที่มี Node.js ติดตั้งอยู่แล้ว
FROM node:20-alpine

# 2) กำหนดโฟลเดอร์ทำงานภายใน container
WORKDIR /app

# 3) ก๊อปไฟล์ dependency แล้วติดตั้ง (แยกชั้นไว้เพื่อใช้แคช)
COPY package*.json ./
RUN npm install

# 4) ก๊อปโค้ดที่เหลือเข้าไป
COPY . .

# 5) บอกว่าแอปเปิดพอร์ตไหน
EXPOSE 3000

# 6) คำสั่งที่รันตอน container เริ่มทำงาน
CMD ["node", "server.js"]
Dockerfile ของเว็บแอป Node.js ง่าย ๆ

วงจรการทำงานพื้นฐาน

# สร้าง image จาก Dockerfile แล้วตั้งชื่อ (tag)
docker build -t myapp:1.0 .

# ส่งขึ้น registry กลางให้คนอื่น/เซิร์ฟเวอร์ดึงไปใช้ได้
docker push myregistry/myapp:1.0

# บนเครื่องอื่น: ดึง image ลงมา
docker pull myregistry/myapp:1.0

# รัน container จาก image (map พอร์ต 8080 ของเครื่อง → 3000 ในกล่อง)
docker run -p 8080:3000 myapp:1.0
build → push → pull → run

สรุป Key Takeaways

  • Dockerfile = สูตร, Image = ผลลัพธ์แช่แข็ง, Registry = ตู้แช่กลางไว้แชร์
  • แต่ละบรรทัดใน Dockerfile = 1 layer ที่ถูกแคชเพื่อ build เร็วขึ้น
  • วงจร: build → push → pull → run
  • ตั้ง tag เวอร์ชันชัดเจน อย่าพึ่ง latest ใน production
อ่านจบแล้วอย่าลืมทำเครื่องหมาย