2. ● DSC Lead Universitas Trilogi (2019 - 2020)
● DevOps Engineer Part-time at Ralali.com (Januari - September 2020)
● Mahasiswa Sistem Informasi di Universitas Trilogi (2017 - July 2021)
● Cloud Student - Bangkit Academy (Februari 2021 - July 2021)
Introduction
4. Docker adalah salah satu platform yang dibangun berdasarkan teknologi
container. Docker menyediakan platform terbuka untuk developer maupun
sysadmin untuk dapat membangun, mengemas, dan menjalankan aplikasi
dimanapun sebagai sebuah wadah (container) yang ringan.
Sumber: Docker Deep DIve
Docker
7. The bad old days
● Biaya Tinggi
● 1 Aplikasi 1 server
● Hard to scale
● “Doesn’t work on my machine”
● Sulit untuk dioptimalkan
8. Mesin Virtual
● Banyak aplikasi dalam 1Host server (+)
● Mengoptimalkan biaya (+)
● Menggunakan OS sendiri dalam setiap VM (-)
● Membutuhkan sumber daya yang banyak (-)
● Sulit untuk melakukan migrasi (-)
9. Container
● Banyak aplikasi dalam 1 host server
● “Works on my machine”
● Berbagai bahasa, berbagai sistem operasi, dan
berbagai infrastruktur.
● Sumber daya yang digunakan sedikit
● Highly Scalable
● Mengoptimalkan biaya
● Mudah untuk dimigrasi
13. Docker Hub (Container Registry)
Docker Hub adalah tempat menyimpan Docker image. Docker Hub
adalah registri publik yang dapat digunakan siapa saja, dan Docker
dikonfigurasi untuk mencari gambar di Docker Hub secara default.
Sumber: docs.docker.com
Container Registry lainnya
AWS ECR Azure Container
Registry
Google Container
Registry
Jfrog Container
Registry
Alibaba Container
Registry
Red Hat Quay
14. Contoh perintah docker
docker build
docker pull
docker run
Membuat image dari Dockerfile
Menarik docker image dari docker registry
Menjalankan sebuah perintah kepada container yang baru
15. Docker Image (Container Image)
Docker Image adalah template yang bersifat read-only dengan instruksi untuk membuat Docker container.
Sumber: Docker Deep Dive
16. Docker Image (Container Image)
FROM alpine
RUN apk add --update nodejs nodejs-npm
COPY . /src
WORKDIR /src
RUN npm install
CMD ["node", "./app.js"]
Dockerfile
# dockerfile format
INSTRUCTION arguments
Sumber: https://docs.docker.com/engine/reference/builder/
17. Docker Image (Container Image)
Command Description
docker build Membuat sebuah image dari Dockerfile
docker image ls Melihat daftar image
docker pull Menarik (pull) image dari repositori
docker push Mengupload image ke repositori
docker rm Menghapus image
docker tag Membuat tag TARGET_IMAGE ke SOURCE_IMAGE yang sudah ada
Sumber: docs.docker.com
19. Image naming and tagging
docker image pull <repository>:<tag>
What we did earlier:
$ docker image pull ubuntu:latest
//Mengambil image dengan tag `latest`
//dari official repository `ubuntu` dari Docker Hub.
Format untuk docker pull , ketika menarik (pull) image dari official repositori:
Format untuk docker build , ketika membuat image dari current directory:
docker build -t image_name:tag_name .
For example:
$ docker build -t website:1.0 .
//membuat image dengan nama `website` dengan tag `1.0`
20. Image naming and tagging
docker tag website:1.0 qassandrach/website:1.0
Memberikan tag pada image
21. Image naming and tagging
DOCKER BUILD
docker build [OPTIONS] PATH | URL | -
Common Options:
--tag, -t Memberi nama dan tag(optional) pada docker image
--file, -f Nama dari Dockerfile (Default is 'PATH/Dockerfile')
22. Docker Container (Container Run-time)
Docker container adalah instance image yang dapat dijalankan.
Sumber: Docker Deep Dive
23. Docker Container (Container Run-time)
DOCKER RUN CONTAINER
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Common Options:
--name Memberikan nama container
--detach, -d Menjalankan container pada background
--publish , -p Menjalankan container pada port tertentu
Contoh
$ docker run --name base -it ubuntu
//Menjalankan docker container `base` menggunakan image `ubuntu`
25. STEPS!
❖ Kloning aplikasi
❖ Membuat Dockerfile
❖ Membuat docker image dari Dockerfile
❖ Menjalankan container dari docker image
26. git clone https://github.com/qassandrach/individual-project.git
Clone an app
Membuat Dockerfile
FROM node:latest
WORKDIR /usr/src/app
COPY package.json .
RUN npm install
COPY . .
CMD [ "node", "server.js" ]
- Install node.js untuk menggunakan npm
- Install dependencies menggunakan npm
- Jalankan aplikasi menggunakan port 8080