Pada kesempatan sebelumnya saya sudah memulis cara instalasi Docker, pada kesempatan kali ini saya akan menulis cara membuat docker private registry. Yang belum sempat membaca dapat melihat pada tautan berikut ini. Sebenarnya apa sih docker private registry? Docker private registry sendiri sama hal nya dengan docker registry atau docker hub yang ada diinternet. Tempat untuk menyimpan dan untuk mendownload images docker. Atau bahasa kerennya push dan pull images. Hanya saja di docker private registry ini untuk menyimpan images diserver lokal, hal ini sangat bagus. Mengingat jika anda ingin berbagi image suatu proyek aplikasi, secara lokal. Ok langsung aja kita mulai, cara membuat docker private registry.
Saat anda membaca ini saya harap anda sudah menginstall docker pada server anda. Jika belum dapat melihat panduannya pada tautan berikut ini. Oh ya perlu diingat disini saya akan membuat sekema sebagai berikut, untuk tutorial kali ini.
Topologi
{INTERNET} | {NAT SERVER} | | -------------------- | -------------------- | | | | {A} {B} {C} 192.168.8.2 192.168.8.3 192.168.8.4
Dari topologi tersebut akan dibuat sekema seperti berikut:
Server A sebagai server docker private registry dengan ip address 192.168.8.2, server B dan C sebagai client dimana akan melakukan push dan pull images melalui docker private registry milik server A. Dengan ip address masing – masing 192.168.8.3 dan 192.168.8.4.
Konfigurasi Pada Server A
Pada server A buat sebuah container untuk menyimpan images dockernya. Untuk perintahnya adalah sebagai berikut:
docker run -d -p 5000:5000 --restart=always --name registry registry:2
Coba pull sebuah images dari docker registry atau docker hub yang ada di internet. Dini saya mengepull image dari images alpine. Untuk perintahnya adalah sebagai berikut:
docker pull alpine:latest
Cek imges yang telah di pull apakah sudah ada di lokal atau belum, dengan perintah berikut:
docker images REPOSITORY TAG IMAGE ID CREATED SIZE alpine latest 965ea09ff2eb 6 weeks ago 5.55MB registry 2 f32a97de94e1 9 months ago 25.8MB
Beri sebuah tag pada images yang telah di pull sebelumnya, dalam hal ini saya akan beri nama localhost. Untuk perintahnya adalah sebagai berikut:
docker tag alpine:latest localhost:5000/alpine:latest
Cek apakah tag tersebut sudah terapply pada imagesnya. Dengan perintah sebagai berikut:
docker images REPOSITORY TAG IMAGE ID CREATED SIZE alpine latest 965ea09ff2eb 6 weeks ago 5.55MB localhost:5000/alpine latest 965ea09ff2eb 6 weeks ago 5.55MB registry 2 f32a97de94e1 9 months ago 25.8MB
Sekarang push images tersebut ke docker private registry. Dengan perintah berikut:
docker push localhost:5000/alpine:latest
Melakukan Pull Images Dari Server Lain
Nah pada tahap ini pada server B dan C dapat melakukan pull images dari server A. Lakukan pull images pada server B atau C, dengan perintah sebagai berikut:
docker pull 192.168.8.2:5000/alpine:latest
Dari perintah datas pasti akan mengeluarkan output error sebagai berikut:
Error response from daemon: Get https://192.168.8.2:5000/v2/: http: server gave HTTP response to HTTPS client
Hal ini dikarenakan secara default docker hanya memperbolehkan komunikasi melalui secure connection. Dimana pada docker server A hanya menggunakan http untuk aksesnya. Maka docker akan menolaknya. Lantas apa dong cara agar docker pada server B dan C dapat melakukan pull ke dari server A. Untuk hal tersebut anda haruslah membuat sebuah file /etc/docker/daemon.json pada server B dan C. Lalu isikan dengan isi sebagai berikut:
{ "insecure-registries" : ["192.168.8.2:5000"] }
Restart servis docker pada server B dan C.
systemctl restart docker.service
Lalu lakukan pull kembali dari server B atau C.
docker pull 192.168.8.2:5000/alpine:latest
Cek apakah images yang telah di pull sudah masuk ke server B atau C.
docker images REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.8.2:5000/alpine latest 965ea09ff2eb 6 weeks ago 5.55MB
Untuk tutorial kali ini cukup segini aja, terimakasih telah membaca.
Mau tanya, supaya bisa push dari client ke registry-nya gimana ya? Soalnya saya push ada pesan errornya layer already exist.
HI Sugeng Agung,
Bisa dibantu tampilan list docker images nya. Untuk perintahnya bisa menggunakan docker images. Dan bisa dibantu juga saat push images apa yang tidak bisa.