Docker Hub และ Container Registry
บทนี้จะทำให้คุณเข้าใจว่า Registry คือคลังภาพกลางของระบบ Docker, Docker Hub ต่างจาก registry อื่นอย่างไร และควรเลือกใช้แบบไหนในงานจริง
ภาพจำ: Registry คือคลังกลางของ image และ Docker Hub คือ registry สาธารณะที่เริ่มใช้งานได้เร็วที่สุด
ภาพจำสำคัญ
คิดว่า Registry คือคลังกลาง ส่วน Docker Hub คือคลังสาธารณะยอดนิยมที่เริ่มต้นได้เร็ว
Diagram: Developer > Push Image > Registry > Deploy
flow นี้คือภาพรวมที่ใช้จริงแทบทุกทีม: นักพัฒนาสร้าง image แล้ว push ไป registry จากนั้นระบบ deploy หรือเซิร์ฟเวอร์จะ pull image เดียวกันไปใช้งาน
1. Developer
เขียนโค้ดและ build image
2. Push Image
ส่ง image พร้อม tag ขึ้น registry
3. Registry
เก็บ image และแจกจ่ายตามสิทธิ์
4. Runtime/Server
pull image แล้วรันเป็น container
ส่วนที่ 1
Registry คืออะไร และทำหน้าที่อะไรใน Docker Ecosystem
Registry คือที่เก็บและกระจาย Docker image แบบรวมศูนย์ของทีม คุณสามารถมองมันเป็นคลังกลางที่ใช้ฝาก image หลัง build เสร็จ แล้วให้เครื่องอื่น pull ไปใช้งานได้ เช่น เครื่องนักพัฒนา เครื่อง CI/CD และเครื่องเซิร์ฟเวอร์ production
- เก็บ image ตามชื่อและ tag เช่น my-app:1.0.0
- ทำให้ทุกสภาพแวดล้อมใช้ image เวอร์ชันเดียวกัน
- เป็นจุดเชื่อมระหว่างขั้น build, test และ deploy
ส่วนที่ 2
Docker Hub คืออะไร
Docker Hub คือ registry สาธารณะที่นิยมที่สุดในโลก Docker ใช้งานง่ายและมี image ให้เริ่มต้นจำนวนมาก เหมาะมากสำหรับผู้เริ่มต้นและทีมที่ต้องการเผยแพร่ image สู่สาธารณะอย่างรวดเร็ว
- Official Images: image มาตรฐานจาก Docker/ผู้ดูแลหลัก เช่น node, nginx, redis โดยมีหลักการดูแลที่ชัดเจนเรื่องความน่าเชื่อถือและการอัปเดต
- Verified Publisher: image จากองค์กรที่ Docker ยืนยันตัวตนแล้ว ช่วยเพิ่มความมั่นใจว่าเป็นผู้เผยแพร่จริง
- Community Images: image จากชุมชน ใช้ได้หลากหลายแต่ควรตรวจเอกสารและความน่าเชื่อถือก่อนใช้งาน production
- Public vs Private Repository: public ให้ทุกคน pull ได้ ส่วน private จำกัดคนเข้าถึง เหมาะกับ image ภายในองค์กร
ส่วนที่ 3
เริ่มใช้งาน Docker Hub แบบทีละขั้น
ขั้นตอนพื้นฐานคือ สมัครบัญชี > สร้าง repository > push image จากเครื่องเรา จากนั้นอ่านหน้า image page ให้เป็นเพื่อดูเวอร์ชันและความเข้ากันได้ของระบบ
แทน YOUR_DOCKERHUB_USERNAME ด้วยชื่อบัญชีของคุณ
- สมัครบัญชีที่ hub.docker.com
- สร้าง Repository ใหม่ (กำหนดชื่อและเลือก public/private)
- อ่านหน้า Image Page ให้เป็น: Tags, Pulls, OS/Arch, และลิงก์ Dockerfile/Source
ส่วนที่ 4
Registry ที่องค์กรนิยมใช้
เมื่อระบบโตขึ้น องค์กรมักเลือก registry ที่ผูกกับ cloud/provider ของตัวเอง เพื่อควบคุมสิทธิ์ ความปลอดภัย และ pipeline ได้แน่นขึ้น
- GitHub Container Registry (ghcr.io): ผูกกับ GitHub Actions และสิทธิ์ระดับ repo/org ได้ดี
- AWS ECR: ผูกกับ IAM, ECS, EKS และบริการ AWS อื่นได้แน่นมาก
- Google Artifact Registry: ทำงานร่วมกับ GCP, Cloud Build, GKE และระบบ artifact อื่นในที่เดียว
- Harbor (Self-hosted): ติดตั้งในองค์กรเอง คุมข้อมูลและนโยบายความปลอดภัยได้ละเอียด
ตารางเปรียบเทียบ Registry
ตารางนี้ช่วยตัดสินใจเบื้องต้นว่าควรเลือก registry แบบไหนตามงบประมาณ และระบบที่องค์กรใช้อยู่
| Registry | ฟรี/เสียเงิน | Private Repo | Integration |
|---|---|---|---|
| Docker Hub | มีทั้งแผนฟรีและเสียเงิน | รองรับ | รองรับเครื่องมือทั่วไป, CI/CD ได้ดี |
| GitHub Container Registry (ghcr.io) | มีโควตาฟรี และคิดค่าใช้จ่ายตามการใช้งาน | รองรับ | เด่นกับ GitHub Actions/Packages |
| AWS ECR | เสียเงินตาม storage และ data transfer | รองรับ (เป็นจุดเด่นหลัก) | เด่นกับ AWS IAM, ECS, EKS |
| Google Artifact Registry | เสียเงินตามการใช้งาน | รองรับ | เด่นกับ GCP, Cloud Build, GKE |
| Harbor (Self-hosted) | ซอฟต์แวร์โอเพนซอร์ส (มีต้นทุนโครงสร้างพื้นฐานเอง) | รองรับ | ยืดหยุ่นสูงในองค์กรที่ต้องโฮสต์เอง |