Docker Registry: Menyimpan dan Mengelola Image Secara Mandiri

Dalam pengembangan aplikasi modern yang berbasis container, image adalah komponen utama. Image ini perlu disimpan, dibagikan, dan dikelola dengan efisien. Di sinilah Docker Registry berperan. Artikel ini akan membahas dua jenis registry: Docker Hub (publik) dan registry private (self-hosted).

Apa Itu Docker Registry?

Docker Registry adalah sistem penyimpanan untuk Docker image. Saat kamu melakukan docker push atau docker pull, kamu berinteraksi dengan registry.

Contoh registry:

Privat: Registry mandiri di server lokal atau cloud milik sendiri.

Publik: Docker Hub

1. Menggunakan Docker Hub

Docker Hub adalah registry publik resmi dari Docker Inc. Untuk menggunakannya:

Langkah 1: Login ke Docker Hub

docker login

Masukkan username dan password akun Docker Hub-mu.

Langkah 2: Tag Image Sebelum Push

Misalnya kamu punya image lokal bernama myapp, kamu harus memberi tag:

docker tag myapp username/myapp:latest

Langkah 3: Push ke Docker Hub

docker push username/myapp:latest

Langkah 4: Pull dari Mana Saja

docker pull username/myapp:latest

Kamu juga bisa membuat repository privat di Docker Hub, namun jumlahnya terbatas pada akun gratis.


2. Membuat Registry Privat Sendiri

Jika kamu ingin menyimpan image secara lokal atau di server sendiri tanpa bergantung pada Docker Hub, kamu bisa membuat registry privat.

Langkah 1: Jalankan Container Registry

Docker sudah menyediakan image resmi registry:

docker run -d -p 5000:5000 --name registry registry:2

Ini akan menjalankan registry lokal di http://localhost:5000.

Langkah 2: Tag dan Push ke Registry Lokal

Misal kamu punya image myapp, beri tag agar cocok ke alamat registry lokal:

docker tag myapp localhost:5000/myapp
docker push localhost:5000/myapp

Langkah 3: Pull dari Registry Lokal

docker pull localhost:5000/myapp

Catatan: Default-nya Docker tidak mengizinkan komunikasi HTTP (non-TLS) ke registry lokal. Untuk testing lokal, kamu bisa menambahkan opsi konfigurasi agar Docker mengizinkan akses insecure registry.

Contoh konfigurasi di /etc/docker/daemon.json:

{
"insecure-registries": ["localhost:5000"]
}

Lalu restart Docker:

sudo systemctl restart docker