ข้ามไปเนื้อหาหลัก
Docker· ~12 นาที· อัปเดตล่าสุด

Registry และ Tags — แชร์ image

push/pull ผ่าน Docker Hub และตั้ง tag เวอร์ชันให้ถูก

ปูพื้นฐาน: เมื่อเราสร้าง Image เสร็จแล้ว มันจะยังอยู่แค่ในคอมพิวเตอร์ของเรา ถ้าเราอยากแชร์ให้คนอื่น หรือเอาไปรันบนเซิร์ฟเวอร์ เราต้องอัปโหลดขึ้นไปเก็บในคลังที่เรียกว่า Registry

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
push image ขึ้น Docker Hub

สรุป 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

อ่านจบแล้วอย่าลืมทำเครื่องหมาย