1 of 53

2 of 53

The Weekly Class Series

ML & AI

Web Dev

Cloud

Mobile Dev

Git

We’re here!

3 of 53

Why Docker???

4 of 53

5 of 53

Container

6 of 53

Container

  • Container adalah proses deployment perangkat lunak yang menyatukan kode aplikasi dengan semua file dan packages yang dibutuhkan untuk berjalan di infrastruktur apa pun.
  • Dengan kontainer, kita dapat membuat satu paket perangkat lunak yang dapat berjalan di semua tipe perangkat dan sistem operasi.

7 of 53

Perbedaan VM dengan Container

8 of 53

Apa itu Docker?

9 of 53

  • Docker adalah tools untuk menjalankan suatu perangkat lunak diatas sebuah container.
  • Docker memiliki environment terisolir untuk masing-masing perangkat lunak yang ingin dijalankan.
  • Docker memiliki konsep menjalankan aplikasi di dalam kontainer.

10 of 53

Arsitektur Docker

11 of 53

Docker Image

  • Docker image merupakan suatu template yang berisikan instruksi-instruksi yang nantinya akan digunakan untuk membuat Docker container.
  • Docker image memudahkan kita untuk melakukan deployment aplikasi tanpa harus menginstall satu persatu komponen yang dibutuhkan di dalam aplikasi tersebut.
  • Contoh docker image adalah ubuntu, debian, node, golang, mysql, dll.
  • Untuk melihat image yang sudah kita download atau pull bisa dengan command:

docker images

12 of 53

Docker Container

  • Docker container adalah suatu instance dari suatu docker image yang berjalan.
  • Kita bisa menjalani banyak docker container dari suatu docker image.
  • Anggap saja docker image adalah resep dari kue, dan docker container adalah kue tersebut. Kita bisa buat banyak kue dari resep dari kue tersebut.
  • Untuk melihat sesuatu yang berhubungan dengan container dapat menggunakan command:

docker container help

13 of 53

Menjalankan docker container

  • Saat kita menjalankan docker container, docker akan mencari docker image yang diinginkan melalui docker registry atau tempat docker image disimpan.
  • Docker registry default adalah melalui Docker Hub.
  • Untuk menjalankan docker container kita bisa menggunakan command:

docker run <image>

  • Untuk melihat apa saja yang berhubungan dengan docker run dapat menggunakan command:

docker help run

14 of 53

hello-world adalah contoh dari docker image

15 of 53

Melihat docker container yang berjalan

  • Untuk melihat docker container yang sedang berjalan kita bisa menggunakan command:

docker ps

16 of 53

Nama image dari container

Port yang terbuka di dalam container

Nama unik dari container

(docker akan memberikan nama random apabila tidak diberikan nama saat di run)

17 of 53

Memberhentikan docker container

  • Untuk memberhentikan docker container yang sedang berjalan kita bisa menggunakan command:

docker stop <container_id atau container_name>

18 of 53

19 of 53

docker run dengan parameter lain

  • Saat menjalankan container, kita dapat menggunakan parameter tambahan seperti menambahkan environment variable kedalam container, menyambung port dari host kita ke port container, dll.
  • Untuk melihat parameter-parameter yang bisa di pakai dapat menggunakan command :

docker help run

20 of 53

21 of 53

docker run – container name

  • Seperti yang dilihat kalau kita tidak menyantumkan nama dari container, docker akan memberikan nama random untuk container tersebut.
  • Untuk memberikan nama pada suatu container kita bisa menggunakan parameter --name untuk memberi nama untuk container tersebut.

22 of 53

docker run – container name

Container terbuat berdasarkan nama yang sudah kita tulis.

23 of 53

docker run – hapus container setelah container di stop

  • Setelah kita menjalankan container, maka container tersebut akan tersimpan dengan nama yang sudah kita sebutkan sebelumnya.
  • Untuk melihat semua container yang sudah kita buat bisa menggunakan

docker container ls -a

24 of 53

docker run – hapus container setelah container di stop

  • Container yang sudah berjalan dengan nama yang sudah ada tidak bisa kita run ulang, hanya bisa kita start.

25 of 53

docker run – hapus container setelah container di stop

  • Oleh karena itu agar kita bisa run ulang maka docker container tersebut harus kita hapus terlebih dahulu.
  • Untuk langsung menghapus docker container setelah kita jalankan bisa menggunakan parameter --rm saat docker run.

26 of 53

docker run – port

  • Port dalam networking adalah nomor yang diberikan secara unik sebagai titik endpoint untuk mengarahkan data ke layanan atau aplikasi tertentu.
  • Aplikasi di docker juga mempunyai PORT yang juga di expose sebagai tanda bahwa koneksi pada aplikasi tersebut terbuka ke PORT tertentu.
  • Kalau dilihat di docker ps, kita bisa lihat PORT mana saja yang dibuka oleh aplikasi tersebut.

27 of 53

docker run – port

  • Untuk menyambungkan PORT dari docker container ke localhost kita, kita bisa menggunakan -p dalam parameter docker run.
  • Command diatas berarti kita ingin menyambungkan port localhost:8080 kita ke PORT 80 docker container.
  • Dilihat di docker ps, localhost kita sudah tersambung dengan docker container.

28 of 53

docker run – port

  • Kalau kita lihat di browser dengan localhost:8080 dan keluar PHPMyAdmin, tandanya kita sudah sukses menyambungkan host kita ke docker container.

29 of 53

docker run – environment variable

  • Environment variable adalah variable atau nilai yang disimpan di dalam sebuah suatu device, dalam hal ini adalah docker container.
  • Environment Variable di dalam docker container sangat berguna apabila kita ingin menyimpan sesuatu credential sehingga kita tidak perlu “hard code” di dalam aplikasi kita.
  • Banyak image di docker registry yang mempunyai environment variable yang bisa kita pakai.

30 of 53

docker run – environment variable

  • Seperti contoh berikut adalah environment variable bawaan dari docker image mysql.

31 of 53

docker run – environment variable

  • Cara untuk menambah environment variable kedalam sebuah docker container adalah sebagai berikut

32 of 53

docker run – environment variable

  • Perintah diatas menjalankan image mysql dengan nama mysql-db, dan memasukkan environment variable untuk memberi root password dan nama database dalam mysql kita.

33 of 53

docker run – environment variable

  • Ketika kita inspect container, maka terlihat environment variable sukses terpasang.

34 of 53

Menjalankan perintah di dalam container

  • Seperti yang kita tahu, docker container berjalan diatas base image dari sistem operasi Linux.
  • Kita bisa mengakses atau menjalankan perintah di dalam container dengan menggunakan:

35 of 53

Menjalankan perintah di dalam container

  • Perintah diatas adalah kita mengakses container dengan nama mysql-db dengan perintah /bin/bash.
  • Perintah bash akan dijalankan dan kita bisa mengakses ke dalam container tersebut.

36 of 53

Docker Network

  • Salah satu kelebihan dari docker container adalah kita bisa menggabungkan banyak aplikasi di dalam satu network yang sama.
  • Docker network mempunyai default network driver yang bernama bridge, dapat kita lihat dengan menggunakan command docker network ls.
  • Docker container berjalan di network bridge secara default, apabila tidak di beri network secara eksplisit.

37 of 53

Docker Network

  • Untuk melihat detail tentang network dari sebuah container, bisa kita inspect dengan command docker inspect <nama_container>

38 of 53

Docker Network - Menggabungkan MySQL dan PHPMyAdmin

  • Untuk menggabungkan container mysql dengan phpmyadmin, kita harus menuliskan environment variabel di phpmyadmin agar bisa terhubung dengan mysql.
  • Environment Variabel yang diperhatikan adalah PMA_HOST dan PMA_PASSWORD.
  • PMA_HOST kita masukkan dengan IP Address dari mysql.
  • PMA_PASSWORD kita masukkan dengan password dari mysql.

39 of 53

Docker Network - Menggabungkan MySQL dan PHPMyAdmin

40 of 53

Docker Network - Membuat Docker Network

  • Network yang dipakai di contoh sebelumnya menggunakan network bridge, kita juga bisa membuat docker network tersendiri.
  • Untuk membuat docker network bisa menggunakan command:

41 of 53

Docker Network - Membuat Docker Network

  • Docker container bisa pasang dengan network yang kita inginkan dengan memakai parameter --network pada command docker run

42 of 53

Docker Network - Membuat Docker Network

  • Perbedaan antara network bridge dengan network yang kita buat sendiri adalah kita bisa menyambung koneksi antara container dengan nama container itu tersendiri, tidak harus melalui IP Address dari container.

43 of 53

Docker Volume

  • Semua data di dalam docker container akan dihapus setelah container di stop.
  • Agar data yang kita inginkan tetap bertahan setelah container dimatikan bisa menggunakan docker volume.
  • Docker akan membuat folder khusus volume yang berisikan data-data yang akan dipasang di container.

44 of 53

Docker Volume

  • Cara untuk memasang volume ke dalam container adalah dengan menggunakan parameter -v pada docker run.
  • Parameter -v mendukung dua cara untuk memasang volume:
  • Langsung memasukkan docker volume yang diinginkan
  • Pilih folder yang diinginkan sebagai docker volume

45 of 53

Membuat docker image dengan Dockerfile

  • Kita bisa membuat custom image khusus untuk aplikasi kita dengan menggunakan Dockerfile.
  • Dockerfile adalah file yang berisi kumpulan perintah yang berfungsi untuk menyusun sebuah docker image.
  • Dockerfile memiliki sintaks yang mirip dengan command di Linux.

46 of 53

Membuat docker image dengan Dockerfile

47 of 53

Membuat docker image dengan Dockerfile

  • Untuk membuat Dockerfile menjadi docker image kita membutuhkan command docker build.
  • Command yang digunakan untuk build Dockerfile adalah:
  • Parameter -t berguna untuk menamai image yang ingin kita build.
  • . artinya adalah tempat Dockerfile yang ingin kita build, yaitu folder saat ini.

48 of 53

git pull origin main

49 of 53

Docker Compose

  • Docker Compose adalah alat untuk mendefinisikan dan menjalankan banyak Docker container.
  • Untuk mengkonfigurasi Docker Compose menggunakan file berformat YAML.
  • Docker compose dijalankan dengan menggunakan command

docker compose up untuk menjalankan compose

dan

docker compose down untuk menghentikan compose

50 of 53

Docker Compose - Sample

51 of 53

Project:�Membuat Docker Compose berisi

PHPMyAdmin dan MySQL

52 of 53

Project:�Membuat Docker Compose berisi

Todo App dengan MySQL dan PHPMyAdmin

53 of 53

Thank You!

Faiz Authar

faizauthar12

https://www.linkedin.com/in/faizauthar12

M Rifqi Al Furqon

rifqoi

https://www.linkedin.com/in/rifqoi

https://discord.gg/ZuEPxWD2HH