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