Registry #
Docker Registry adalah komponen penting dalam ekosistem Docker yang berfungsi sebagai tempat penyimpanan dan distribusi Docker Image. Hampir semua workflow container modern—mulai dari local development, CI/CD, hingga production—selalu melibatkan registry.
Sebelum masuk ke detail teknis, berikut gambaran alur kerja Docker Registry secara umum:
+-------------------+ docker push +----------------------+
| Developer / CI | -----------------------> | Docker Registry |
| (docker build) | | (Docker Hub / ECR) |
+-------------------+ +----------+-----------+
|
| docker pull
v
+----------+-----------+
| Runtime / Server |
| (Docker / K8s Node) |
+----------------------+
Diagram di atas menunjukkan bagaimana image dibangun, disimpan di registry, lalu didistribusikan ke environment lain.
Apa Itu Docker Registry? #
Docker Registry adalah service yang menyimpan Docker Image dalam bentuk repository dan tag.
Secara sederhana:
- Image = artefak hasil
docker build - Registry = tempat menyimpan image
- Repository = kumpulan image dengan nama yang sama
- Tag = versi dari image
Contoh:
nginx:1.25
nginx→ repository1.25→ tag
Tanpa registry, Docker tidak bisa:
- Berbagi image antar developer
- Deploy aplikasi ke server lain
- Melakukan CI/CD berbasis container
Komponen Utama Docker Registry #
Secara internal, sebuah Docker Registry memiliki beberapa komponen penting:
Repository #
Repository adalah namespace untuk image.
Contoh:
unisbadri/myapp
Satu repository bisa memiliki banyak tag:
unisbadri/myapp:latest
unisbadri/myapp:v1.0.0
unisbadri/myapp:v1.1.0
Tag #
Tag merepresentasikan versi image.
Best practice tag:
v1.2.3(semantic versioning)sha-<commit>- Hindari hanya
latestdi production
Manifest #
Manifest adalah metadata image yang berisi:
- Daftar layer
- Arsitektur (amd64, arm64)
- OS (linux, windows)
Manifest memungkinkan multi-arch image:
myapp:latest
├─ linux/amd64
└─ linux/arm64
Layer #
Docker Image terdiri dari layer-layer filesystem:
- Immutable
- Bisa di-share antar image
- Membuat build dan pull lebih cepat
Contoh:
Base Image (alpine)
+-------------------+
App Dependencies
+-------------------+
Application Binary
Jenis-Jenis Docker Registry #
Public Registry #
Registry yang bisa diakses publik.
Contoh:
- Docker Hub
- GitHub Container Registry (GHCR)
Kelebihan:
- Mudah digunakan
- Banyak image official
Kekurangan:
- Rate limit
- Risiko supply chain attack
Private Registry #
Registry yang hanya bisa diakses oleh internal tim atau organisasi.
Contoh:
- Self-hosted Docker Registry
- AWS ECR
- GCP Artifact Registry
- Azure Container Registry
Kelebihan:
- Lebih aman
- Kontrol akses
- Cocok untuk production
Docker Registry vs Docker Hub #
Docker Hub bukanlah Docker Registry itu sendiri, melainkan implementasi registry.
| Aspek | Docker Registry | Docker Hub |
|---|---|---|
| Konsep | Teknologi / Service | Platform / Produk |
| Hosting | Self-hosted / Cloud | Hosted oleh Docker |
| Akses | Bisa private | Public & private |
Workflow Dasar Docker Registry #
1. Build Image #
docker build -t myapp:v1 .
2. Tag ke Registry #
docker tag myapp:v1 registry.example.com/myapp:v1
3. Push ke Registry #
docker push registry.example.com/myapp:v1
4. Pull di Server Lain #
docker pull registry.example.com/myapp:v1
Self-Hosted Docker Registry #
Docker menyediakan image resmi untuk registry:
registry:2
Contoh docker-compose sederhana:
version: "3.9"
services:
registry:
image: registry:2
ports:
- "5000:5000"
volumes:
- registry-data:/var/lib/registry
volumes:
registry-data:
Akses image:
localhost:5000/myapp:v1
Security di Docker Registry #
1. Authentication #
- Basic Auth
- Token-based Auth
- Cloud IAM (ECR, GCR, ACR)
2. Authorization #
Kontrol:
- Siapa yang boleh push
- Siapa yang hanya boleh pull
3. Image Scanning #
Banyak registry modern menyediakan:
- Vulnerability scanning
- CVE detection
Contoh:
- Docker Hub Scan
- AWS ECR Image Scan
Best Practice #
1. Gunakan Tag yang Jelas #
❌ latest
✅ v1.4.2, prod-2026-02-07
2. Pisahkan Registry per Environment #
registry.dev.localregistry.staging.localregistry.prod.local
3. Aktifkan Image Scanning #
Selalu scan image sebelum deploy ke production.
4. Gunakan Immutable Image #
Jangan overwrite tag yang sama untuk versi berbeda.
5. Bersihkan Image Lama #
Implementasikan:
- Retention policy
- Lifecycle rule
Penutup #
Docker Registry adalah fondasi penting dalam arsitektur container modern. Dengan pemahaman yang baik tentang konsep, komponen, dan best practice registry, kamu bisa membangun pipeline deployment yang:
- Aman
- Konsisten
- Mudah diskalakan
Registry bukan hanya tempat menyimpan image, tapi juga tulang punggung distribusi aplikasi berbasis container.