Cara Membuat Docker image dan Upload ke Docker Hub

Secara default, Docker image bisa kita dapatkan dari Docker registry di Docker Hub. Docker image bisa juga kita buat sendiri, apakah itu dari container yang sudah ada atau build dari Dockerfile. Nah, pada seri tutorial Docker kali ini kita akan belajar bagaimana cara membuat Docker image dan juga upload (push) Docker image ke registry.

*Cara Pertama: Build dari container*

Pada tutorial sebelumnya kita telah belajar bagaimana cara deploy website HTML dengan metode copy file website ke dalam container. Container tersebut bisa kita jadikan image.

Misalnya membuat Docker image dengan nama /web-freelancer:v1/ dari container /web-freelancer/.

[INPUT]

1 docker commit web-freelancer web-freelancer:v1  

Menampilkan Docker images untuk mengetahui apakah image yang dibuat sudah tercipta.

[INPUT]

1 docker images

Contoh hasil perintah di atas.

[INPUT]

1 2 REPOSITORY       TAG             IMAGE ID       CREATED         SIZE web-freelancer   v1              0086656c5db9   7 seconds ago   844MB

*Cara Kedua: Build dari Dockerfile*

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

Membuat Dockerfile.

[INPUT]

1 nano Dockerfile    

Isi dari Dockerfile.

[INPUT]

1 2 3 4 5 FROM nginx:stable-alpine LABEL maintainer=”Musa Amin ” COPY freelancer/. /usr/share/nginx/html EXPOSE 80 CMD [“nginx”, “-g”, “daemon off;”]    

· FROM = basis image yang digunakan · LABEL maintainer = nama pembuat · COPY = copy isi folder ke folder di container · EXPOSE = buka (publish) port 80 · CMD = perintah yang dijalankan

Jalankan perintah build image yang menghasilkan image dengan nama /web-freelancer:v1/.

[INPUT]

1 docker build -t web-freelancer:v1 .

Contoh hasil perintah di atas.

[INPUT]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Sending build context to Docker daemon  647.2kB Step 1/5 : FROM nginx:stable-alpine —> e1ccef1fb908 Step 2/5 : LABEL maintainer=”Musa Amin ” —> Running in 9d5ec8ad6e66 Removing intermediate container 9d5ec8ad6e66 —> e1d4af9c4a81 Step 3/5 : COPY freelancer/. /usr/share/nginx/html —> 2427540472a7 Step 4/5 : EXPOSE 80 —> Running in ee5755a4d8ab Removing intermediate container ee5755a4d8ab —> 86ceb19cc687 Step 5/5 : CMD [“nginx”, “-g”, “daemon off;”] —> Running in 4f57d1a56fe3 Removing intermediate container 4f57d1a56fe3 —> 1915e927a451 Successfully built 1915e927a451 Successfully tagged web-freelancer:v1    

Menampilkan Docker images.

[INPUT]

1 2 3 4 docker images   REPOSITORY       TAG             IMAGE ID       CREATED          SIZE web-freelancer   v1              1915e927a451   24 seconds ago   23.1MB

Informasi lengkap mengenai Docker build baca di docs.docker.com.

*Upload (push) image*

Selanjutnya kita akan upload (push) image ke Docker registry, Docker Hub.

Buatlah akun terlebih dahulu di hub.docker.com.

Login ke Docker Hub.

[INPUT]

1 docker login    

Contoh hasil perintah di atas.

[INPUT]

1 2 3 4 5 6 7 8 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: musaamin Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store   Login Succeeded    

image yang akan di-push harus menyertakan username registry. Misalnya username saya adalah /musaamin/, berarti nama images harus /musaamin/repository:tag/.

Kita ubah dulu image sebelumnya /web-freelancer:v1/ menjadi /musaamin/web-freelancer:v1/.

[INPUT]

1 docker tag web-freelancer:v1 musaamin/web-freelancer:v1    

Tampilkan kembali docker images untuk melihat hasilnya.

[INPUT]

1 2 3 4 5 docker images   REPOSITORY                TAG             IMAGE ID       CREATED          SIZE web-freelancer            v1              1915e927a451   15 minutes ago   23.1MB musaamin/web-freelancer   v1              1915e927a451   15 minutes ago   23.1MB    

Sekarang push ke registry.

[INPUT]

1 docker push musaamin/web-freelancer:v1

Contoh hasil perintah di atas.

[INPUT]

1 2 3 4 5 6 7 8 9 The push refers to repository [docker.io/musaamin/web-freelancer] 1338f25d181c: Pushed a7c11ed26fd5: Pushed 6e8309ec6bfd: Pushed 7ff80c2c03d5: Pushed 35e4637a9d6c: Pushed b5d14f4aebad: Pushed b2d5eeeaba3a: Pushed v1: digest: sha256:2b0e45056281ad3fea049bc91baf0373d64ff64a626b76b64d224e819ea3dead size: 1778

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

Docker Hub – Repositories

Docker Hub – Repository

*Download (pull) image*

Uji coba download (pull) image yang telah di-push sebelumnya.

[INPUT]

1 docker pull musaamin/web-freelancer:v1    

Uji coba membuat container.

[INPUT]

1 docker run -d -p 80:80 –name web web-freelancer:v1  

Tampilkan container.

[INPUT]

1 2 3 4 docker ps   CONTAINER ID   IMAGE               COMMAND                  CREATED          STATUS          PORTS                               NAMES de139a9c6f50   web-freelancer:v1   “/docker-entrypoint.”€¦”   43 seconds ago   Up 41 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   web    

Selamat mencoba 🙂

Leave a Reply

Your email address will not be published.