Registry และ Tags — แชร์ image
push/pull ผ่าน Docker Hub และตั้ง tag เวอร์ชันให้ถูก
ปูพื้นฐาน: เมื่อเราสร้าง Image เสร็จแล้ว มันจะยังอยู่แค่ในคอมพิวเตอร์ของเรา ถ้าเราอยากแชร์ให้คนอื่น หรือเอาไปรันบนเซิร์ฟเวอร์ เราต้องอัปโหลดขึ้นไปเก็บในคลังที่เรียกว่า Registry
Registry เหมือนคลังสินค้ากลางที่เก็บ image ให้คนอื่น/เซิร์ฟเวอร์มาหยิบไปใช้ · Docker Hub คือ registry สาธารณะที่ใหญ่ที่สุด · tag เหมือนป้ายบอกรุ่นสินค้า
หลัง build image แล้ว เราต้อง push ขึ้น registry เพื่อให้เครื่องอื่น (หรือ Kubernetes) pull ไปรันได้
docker login # ล็อกอิน Docker Hub
# ตั้ง tag เป็นรูปแบบ <username>/<repo>:<version>
docker tag myapp:1.0 myuser/myapp:1.0
docker push myuser/myapp:1.0 # ส่งขึ้น registry
# เครื่องอื่น: ดึงลงมาใช้
docker pull myuser/myapp:1.0สรุป Key Takeaways
- Registry = คลังกลางเก็บ image · Docker Hub = สาธารณะที่นิยมสุด
- วงจร: login → tag (user/repo:version) → push → (เครื่องอื่น) pull
- อย่าใช้ latest ใน production — ตั้ง tag เวอร์ชันชัดเจน
คำถามที่พบบ่อย
tag :latest มีปัญหาอะไร ทำไมห้ามใช้ใน production
latest ไม่ได้แปลว่า "ใหม่สุด" — เป็นแค่ tag default ที่ชี้ไปไหนก็ได้และ "เปลี่ยนได้ตลอด" ทำให้ deploy วันนี้กับพรุ่งนี้ได้คนละ image โดยไม่รู้ตัว rollback ก็ทำไม่ได้เพราะไม่รู้ว่าเมื่อวานคืออันไหน — production ให้ pin เวอร์ชันชัด (myapp:1.4.2 หรือดีสุดคือ digest)
Push image ขึ้น registry ส่วนตัวต้องทำยังไง
สามขั้น: docker login <registry> → tag ให้มีชื่อ registry นำหน้า (docker tag myapp:1.0 registry.example.com/team/myapp:1.0) → docker push — ชื่อ image ที่มี host นำหน้าคือตัวบอกปลายทาง ไม่ใส่ = ไป Docker Hub

