17 ธ.ค. เวลา 05:20 • การศึกษา

Docker Registry คืออะไร

โดย
ในโลกของการพัฒนาแอปพลิเคชันด้วยเทคโนโลยี Container การมีระบบจัดเก็บ และ แบ่งปัน Container Images ที่มีประสิทธิภาพเป็นสิ่งสำคัญไม่แพ้การสร้าง Images เอง
หากเปรียบ Docker Images เป็น "Blueprint" ของแอปพลิเคชัน Docker Registry ก็คือ "ห้องสมุดกลาง" ที่รวบรวม และ จัดเก็บ Blueprint เหล่านี้ให้ทีมงานสามารถเข้าถึง ดึงมาใช้งาน และ อัปเดตได้อย่างสะดวกและ ปลอดภัย การเข้าใจระบบ Registry คือหัวใจสำคัญของการทำงานกับ Container ในระดับองค์กร
1
  • ​Docker Registry คืออะไร
Docker Registry เป็นระบบจัดเก็บ (Storage System) และ เซิร์ฟเวอร์สำหรับจัดเก็บและแจกจ่าย Docker Images ซึ่งทำหน้าที่เป็นคลังรวม Container Images สำหรับการแชร์ระหว่างทีมงาน และ ระบบต่างๆ ในกระบวนการพัฒนา และ ส่งมอบซอฟต์แวร์ (CI/CD)
💡 แนวคิดหลัก
Registry ทำงานคล้ายกับ GitHub แต่สำหรับ Docker Images แทนที่จะเก็บโค้ด มันเก็บ Images ที่พร้อมใช้งานทันที
  • ​Docker Registry ทำงานอย่างไร
■ 1) กลไกการทำงานพื้นฐาน
ระบบ Registry ใช้สถาปัตยกรรมแบบ Client-Server โดยมีกลไกหลักดังนี้:
☆ กระบวนการ Push Image เข้า Registry
1) เตรียม Image
Developer สร้าง Docker Image และ ติด Tag ด้วยชื่อ Registry
```
docker tag myapp:latest myregistry.com/myapp:v1.0
```
2) Authentication
Client เข้าระบบกับ Registry (ถ้าต้องการ)
3) Layer Upload
Docker แยก Image เป็น Layer และ อัปโหลดทีละ Layer
4) Manifest Upload
อัปโหลด Manifest ไฟล์ที่ระบุ Layer ทั้งหมด
5) Verification
Registry ตรวจสอบความสมบูรณ์ของข้อมูล
☆ กระบวนการ Pull Image จาก Registry
1) Request Image
Client ขอ Image จาก Registry
2) Authentication
ตรวจสอบสิทธิ์ (ถ้ามี)
3) Download Manifest
ดึง Manifest เพื่อดูโครงสร้าง Image
4) Download Layers
ดึงแต่ละ Layer ตามที่ระบุใน Manifest
5) Assemble Image
ประกอบ Layer กลับเป็น Image พร้อมใช้งาน
■ 2) โครงสร้างข้อมูลใน Registry
☆ Repository
- คลังเก็บ Images สำหรับแอปพลิเคชันหนึ่งๆ
- ตัวอย่าง: myregistry.com/backend-api
- แต่ละ Repository สามารถมีหลาย Tags ได้
☆ Tags
- ฉลากระบุเวอร์ชันของ Image
- ตัวอย่าง: v1.0.0, latest, production
- ช่วยจัดการเวอร์ชันต่างๆ ของแอปพลิเคชันเดียวกัน
☆ Manifest
- ไฟล์ JSON ที่อธิบาย Image
- ประกอบด้วย:
○ Metadata ของ Image
○ รายการ Layer และ checksum
○ ข้อมูลเกี่ยวกับ Architecture
☆ Layers
- แต่ละ Layer เป็นการเปลี่ยนแปลงแบบอ่านได้อย่างเดียว
- ใช้ระบบ Content-Addressable Storage
- Layer เดียวกันสามารถแชร์ระหว่าง Images หลายตัวได้
■ 3) การจัดการ Storage
Registry ใช้ระบบเก็บข้อมูลได้หลายแบบ:
- ระบบไฟล์ท้องถิ่น (สำหรับการติดตั้งขนาดเล็ก)
- Cloud Storage (เช่น AWS S3, Google Cloud Storage)
- ระบบ Distributed Storage (เช่น Ceph, MinIO)
  • ​ประเภทของ Docker Registry
1) Public Registry (คลังสาธารณะ)
☆ Docker Hub
- Registry สาธารณะที่ใหญ่ที่สุด
- มี Official Images จากผู้พัฒนาซอฟต์แวร์ต่างๆ
- มีทั้ง Free และ Paid Plans
- ตัวอย่าง Images: nginx:latest, postgres:13, node:16
✅️ ข้อดีของ Public Registry
- ไม่ต้องตั้งค่าเอง
- มี Images ให้เลือกมากมาย
- ฟรีสำหรับการใช้งานพื้นฐาน
🙅‍♂️ ข้อจำกัด
- ข้อจำกัดจำนวน Pull (สำหรับ Free Tier)
- ความเร็วอาจช้าถ้า Server อยู่ห่าง
- ไม่เหมาะสำหรับ Images ที่เป็นความลับทางธุรกิจ
2) Private Registry (คลังส่วนตัว)
☆ Docker Registry Open Source
- สามารถติดตั้งบน Infrastructure ของตัวเอง
- ควบคุมได้เต็มที่
- เหมาะสำหรับองค์กร
☆ Third-Party Registry Services
- AWS Elastic Container Registry (ECR)
- Google Container Registry (GCR)
- Azure Container Registry (ACR)
- GitHub Container Registry (GHCR)
- GitLab Container Registry
2
☆ On-Premise Registry Solutions
- Harbor (VMware) มีฟีเจอร์ครบถ้วนสำหรับองค์กร
- Nexus Repository (Sonatype) จัดการทั้ง Docker Images และ Artifacts อื่นๆ
- Portus (SUSE) Registry พร้อม Web UI
☆ 3. Hybrid Registry (คลังแบบผสม)
- ใช้ทั้ง Public และ Private Registry พร้อมกัน
- Pull Base Images จาก Public
- Push/Pull Custom Images ผ่าน Private
  • ​ประโยชน์
1) ความสอดคล้องและควบคุมเวอร์ชัน
- ทุกคนในทีมใช้ Images เวอร์ชันเดียวกัน
- สามารถ Rollback ไปเวอร์ชันก่อนหน้าได้ง่าย
- ป้องกันปัญหา "Works on my machine"
2) ความปลอดภัยและการควบคุม
- เก็บ Images ที่มี Source Code หรือ Configuration ลับได้
- ควบคุมการเข้าถึงด้วย Authentication และ Authorization
- สแกน Images เพื่อหาช่องโหว่ความปลอดภัย
- ใช้ Digital Signature เพื่อยืนยันความถูกต้องของ Images
3) ประสิทธิภาพและความเร็ว
- ลดเวลาดาวน์โหลด Images จากอินเทอร์เน็ต
- Cache Images ภายในเครือข่ายองค์กร
- ลดการใช้แบนด์วิดท์อินเทอร์เน็ต
4) การทำงานร่วมกับ CI/CD
- จุดกลางสำหรับ Images ที่ Build จาก CI Pipeline
- อัตโนมัติการ Push Images หลัง Build สำเร็จ
- อัตโนมัติการ Pull Images ในการ Deploy
5) ความน่าเชื่อถือและความพร้อมใช้งาน
- ไม่ขึ้นกับบริการภายนอก
- สามารถออกแบบให้มีความพร้อมใช้งานสูง (High Availability)
- Backup และ Recovery ได้ง่าย
  • ​แหล่งของ Docker Registry
1) Public Registry (ใช้ฟรี/ยอดนิยมที่สุด)
เหมาะสำหรับโปรเจกต์ทั่วไป Open Source หรือ คนที่เพิ่งเริ่มต้น
🔵 Docker Hub (ตัวมาตรฐานที่ทุกคนต้องรู้จัก) คืออะไร
เป็น Official Registry ของ Docker เอง มี Image ของโปรแกรมดังๆ แทบทุกตัวในโลก (เช่น ubuntu, python, node, nginx)
✅️ จุดเด่น
ใช้งานง่ายสุด ผูกกับคำสั่ง docker pull / docker push โดยตรง
2
🔴 Quay.io (อ่านว่า "คีย์")
คืออะไร: ของค่าย Red Hat (ผู้สร้าง Linux รายใหญ่)
✅️ จุดเด่น: มีระบบ Security Scan ที่ดีมาก นิยมใช้ในองค์กรที่เน้นความปลอดภัย
🔗 Link: https://quay.io
2
2) Cloud Provider Registry (สำหรับคนใช้ Cloud เจ้าไหนก็ใช้เจ้านั้น)
ถ้าบริษัทคุณใช้ Cloud อยู่แล้ว แนะนำให้ใช้ของเจ้านั้นๆ เพราะจะดึง Image ได้เร็วกว่า และ จัดการสิทธิ์ (Permission) ง่ายกว่ามาก
🟠 AWS - Amazon Elastic Container Registry (ECR)
🟢 Google Cloud - Artifact Registry (มาแทน Container Registry ตัวเก่า)
🔵 Azure - Azure Container Registry (ACR)
3) Code Repository Integration (เก็บไว้ที่เดียวกับ Code)
เหมาะสำหรับทีมที่อยากรวมที่เก็บ Code และ ที่เก็บ Image ไว้ที่เว็บเดียวกัน ไม่ต้องสมัครหลายบัญชี
⚫️ GitHub Container Registry (GHCR)
✅️ จุดเด่น: ถ้าฝาก Code ไว้ที่ GitHub อยู่แล้ว ใช้ตัวนี้สะดวกมาก เชื่อมกับ GitHub Actions ได้เนียนๆ
🟠 GitLab Container Registry
✅️ จุดเด่น: ติดมากับทุกโปรเจกต์ของ GitLab เลย ใช้งานคู่กับ GitLab CI/CD ได้ทันที
4) Self-Hosted (ติดตั้งใช้เองในองค์กร)
สำหรับองค์กรที่ต้องการความเป็นส่วนตัวสูงมาก ไม่อยากฝากไฟล์ไว้บน Cloud ของคนอื่น
🟠 Harbor (ยอดนิยมสำหรับสายทำเอง)
✅️ จุดเด่น: เป็น Open Source โหลดไปติดตั้งบน Server ตัวเองได้ฟรี มีฟีเจอร์จัดการสิทธิ์และ สแกนไวรัสในตัว
🟢 JFrog Artifactory
✅️ จุดเด่น: เป็นเครื่องมือจัดการ Artifact ระดับ Enterprise ที่รองรับทั้ง Docker, Java, npm ฯลฯ ครบจบในที่เดียว
✏️ Shoper Gamer
  • ​Docker คืออะไร? เปลี่ยนการพัฒนาแอปพลิเคชันให้ง่ายเหมือนแพ็คกระเป๋า! 👇
Credit :
👇
  • ​https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-a-registry/
  • ​https://www.sysdig.com/learn-cloud-native/what-is-a-docker-registry
  • ​https://dev.to/szabgab/what-is-the-docker-registry-4m8
  • ​https://tinyurl.com/4pzk6kyp
โฆษณา