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.

Uji coba download (pull) image sebelumnya yang kita build
docker pull gunawand/kuebctl-alpine:latest
Selamat Mencoba 🙂

Admin website igunawan.com, System Administrator, DevOps Engineer