Introduction
Docker Registry adalah tempat dimana kita menyimpan dan mendistribuskikan docker image. Kita bisa mendeploy Docker Registry secara local agar tidak terus menerus mengambil dari registry external seperti Docker Hub, GCR, dll.
Contoh Case:
-
Suatu kelas akan praktek docker, daripada setiap siswa harus nge pull ke registry external dan membuat traffic keluar membesar, lebih baik buat satu local registry lalu setiap siswa tinggal nge pull ke local registry tersebut.
-
Suatu perusahaan sering ngedploy image, ada kemungkinan terjadi Sensitive Data Exposure, maka sebaiknya dibikin private registry khusus untuk image2 perusahaan tersebut.
Setup Registry
Untuk setup docker registry sangatlah gampang, kita tinggal menjalankan container dengan image registry
. Disini saya expose port ke 5000, mount folder registry nya ke folder host agar data image tidak hilang saat container terhapus, dan saya set restart ke unless-stopped agar menjaga container tetap hidup jika suatu saat container berhenti.
docker run -d --name registry -p 5000:5000 --restart unless-stopped -v /mnt/registry:/var/lib/registry registry:latest
Push Image
Sekarang kita bisa menyimpan image ke registry dengan cara:
docker tag my-image localhost:5000/my-image
docker push localhost:5000/my-image
List Images
Untuk melihat list avaible images kita bisa request ke api dengan cara:
$ curl -X GET http://localhost:5000/v2/_catalog
{"repositories":["my-image"]}
Selengkapnya tentang docker registry api bisa check disini
Pull Images Dari Client/Server Lain
Karena registry yang kita buat tidak menggunakan tls/ssl, jadi akan terdeteksi unsecure connection atau insecure registry saat kita mengepull image dari device lain. Secara default Docker hanya mengijinkan pull menggunakan secure connection.
Untuk mengatasi hal tersebut kita bisa menambahkan file /etc/docker/daemon.json yang berisi:
{
"insecure-registries": ["10.10.10.10:5000"]
}
Sesuaikan ip dengan ip server registry kalian. Lalu restart service docker:
systemctl restart docker.service
Sekarang coba kita pull image dari server/client lain, maka image akan berhasil dipull.
docker pull 10.10.10.10:5000/my-image
Remove Registry
Untuk menghapus registry kita bisa langsung saja menghapus container yang dibuat sebelumnya:
docker rm -f registry
Penutup
Sebenarnya kita bisa setup docker registry dengan secure connection dan authentication, yang mungkin akan dibahas di tulisan selanjutnya. Sekian tutorial untuk setup local docker registry, jika ada kesalahan penulisan mohon dimaafkan. Terimakasih.
Referensi:
https://docs.docker.com/registry/deploying/
https://medium.com/@dataq/membuat-docker-private-registry-6efe534df4d5