Introduction

Docker image bisa kita download atau pull dari Docker Registry, Docker imagepun juga bisa kita buat sendiri, nah pada tutorial kali ini kita akan belajar bagaimana cara membuat Docker image dan kemudian kita upload (push) ke Docker Image registry / Docker hub.

Adapun langkah-langkahnya disini saya bagi menjadi 3 bagian sebagai berikut:

Step 1 – Create Dockerfile & Build

Dockerfile adalah sebuah file teks konfigurasi yang mendeskripsikan instruksi atau perintah yang dijalankan saat proses pembuatan Docker image.

Membuat Dockerfile, disini saya contohkan saya membuat image kubectl dengan image Alpine

FROM alpine
RUN apk update && apk add curl git
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.15.1/bin/linux/amd64/kubectl
RUN chmod u+x kubectl && mv kubectl /bin/kubectl

Jalankan perintah build, untuk mem-build docker file diatas dengan perintah

docker build -t kubectl-alpine .

Output dari hasil perintah diatas

Step 1/4 : FROM alpine
latest: Pulling from library/alpine
213ec9aee27d: Pull complete
Digest: sha256:bc41182d7ef5ffc53a40b044e725193bc10142a1243f395ee852a8d9730fc2ad
Status: Downloaded newer image for alpine:latest
---> 9c6f07244728
Step 2/4 : RUN apk update && apk add curl git
---> Running in d01623144279
fetch https://dl-cdn.alpinelinux.org/alpine/v3.16/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.16/community/x86_64/APKINDEX.tar.gz
v3.16.2-198-gf20eefe253 [https://dl-cdn.alpinelinux.org/alpine/v3.16/main]
v3.16.2-202-ge26245aea1 [https://dl-cdn.alpinelinux.org/alpine/v3.16/community]
OK: 17028 distinct packages available
(1/8) Installing ca-certificates (20220614-r0)
(2/8) Installing brotli-libs (1.0.9-r6)
(3/8) Installing nghttp2-libs (1.47.0-r0)
(4/8) Installing libcurl (7.83.1-r3)
(5/8) Installing curl (7.83.1-r3)
(6/8) Installing expat (2.4.9-r0)
(7/8) Installing pcre2 (10.40-r0)
(8/8) Installing git (2.36.2-r0)
Executing busybox-1.35.0-r17.trigger
Executing ca-certificates-20220614-r0.trigger
OK: 20 MiB in 22 packages
Removing intermediate container d01623144279
---> 73a84c3a59ab
Step 3/4 : RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.15.1/bin/linux/amd64/kubectl
---> Running in 74e40291aa22
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 40.9M 100 40.9M 0 0 1629k 0 0:00:25 0:00:25 --:--:-- 1726k
Removing intermediate container 74e40291aa22
---> e254eac7d632
Step 4/4 : RUN chmod u+x kubectl && mv kubectl /bin/kubectl
---> Running in cb68418bc388
Removing intermediate container cb68418bc388
---> 1d3a62c40974
Successfully built 1d3a62c40974
Successfully tagged kubectl-alpine:latest

Check Docker images

docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kubectl-alpine latest 1d3a62c40974 About a minute ago 108MB

untuk tutorial cara build bisa check di dokumentasi berikut docs.docker.com

Step 2 – Push To repository

Selanjutnya kita push image tersebut ke docker hub, akan tetapi sebelum itu kita diharuskan untuk login ke docker hub

docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: gunawand
Password:
WARNING! Your password will be stored unencrypted in /home/gunawan/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

image yang akan kita push harus menyertakan username registry docker hub kita, misalnya username saya gunawand berarti nama imagenya sebelumnya 

kubectl-alpin:latest
 menjadi 
gunawand/kubectl-alpine

Rubah terlebih dahulu tag imagenya seperti berikut

docker tag kubectl-alpine:latest gunawand/kuebctl-alpine

Kemudian jika sudah , maka selanjutnya push ke registry docker hub

docker push gunawand/kuebctl-alpine:latest

output

The push refers to repository [docker.io/gunawand/kuebctl-alpine]
3580bfd95731: Pushed
6001176e18f1: Pushed
bd88e9bdfe20: Pushed
994393dc58e7: Mounted from library/alpine
latest: digest: sha256:8e43138bb668786fc5a16bbeaa58e59a47d47d68634d7ec8dd078c877d1274f4 size: 1163

Step 3 – Pull Image

Cek di hub.docker.com, apakah image berhasil di-push.

Docker image on Docker hub

Uji coba download (pull) image sebelumnya yang kita build

docker pull gunawand/kuebctl-alpine:latest

Selamat Mencoba