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 → repository
  • 1.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 latest di 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.

AspekDocker RegistryDocker Hub
KonsepTeknologi / ServicePlatform / Produk
HostingSelf-hosted / CloudHosted oleh Docker
AksesBisa privatePublic & 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 #

latestv1.4.2, prod-2026-02-07

2. Pisahkan Registry per Environment #

  • registry.dev.local
  • registry.staging.local
  • registry.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.

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact