SlideShare a Scribd company logo
1 of 29
Download to read offline
Berkenalan dengan Docker
Qassandra Chaidir
@qassandrach
DSC Lead Universitas Trilogi 2019
● 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
Docker
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
Docker? Container?
Kenapa container? Apa fungsinya? Gimana cara pakenya?
Evolusi Software Deployment
The bad old days
● Biaya Tinggi
● 1 Aplikasi 1 server
● Hard to scale
● “Doesn’t work on my machine”
● Sulit untuk dioptimalkan
Mesin Virtual
● Banyak aplikasi dalam 1Host server (+)
● Mengoptimalkan biaya (+)
● Menggunakan OS sendiri dalam setiap VM (-)
● Membutuhkan sumber daya yang banyak (-)
● Sulit untuk melakukan migrasi (-)
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
Dasar-dasar
Docker
● Docker Image (build-time)
● Docker Container (Run-time)
● Docker Hub (Registry)
Arsitektur Docker
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
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
Docker Image (Container Image)
Docker Image adalah template yang bersifat read-only dengan instruksi untuk membuat Docker container.
Sumber: Docker Deep Dive
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/
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
Image dan Layers
Dockerfile ubuntu:latest
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`
Image naming and tagging
docker tag website:1.0 qassandrach/website:1.0
Memberikan tag pada image
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')
Docker Container (Container Run-time)
Docker container adalah instance image yang dapat dijalankan.
Sumber: Docker Deep Dive
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`
Hands On!
STEPS!
❖ Kloning aplikasi
❖ Membuat Dockerfile
❖ Membuat docker image dari Dockerfile
❖ Menjalankan container dari docker image
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
docker build -t bulletin:1 .
Membuat docker image
Menjalankan docker container
docker run -d -p 8084:8080 --name bulletin bulletin:1
Level Up! (optional) -->
docker tag bulletin:1 qassandrach/bulletin:1
Mengupload docker image ke docker hub
Menjalankan docker container
docker push qassandrach/bulletin:1
Memberikan tag pada image
Docker Hub login
Docker login
Sumber
● Docker Deep Dive by Nigel Pouton
● docs.docker.com
● kubernetes.io
● Codepolitan
● https://medium.com/faun/everything-you-need-to-know-about-containers-7655badb4307

More Related Content

What's hot

Introduction to Docker - VIT Campus
Introduction to Docker - VIT CampusIntroduction to Docker - VIT Campus
Introduction to Docker - VIT CampusAjeet Singh Raina
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker IntroductionPeng Xiao
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker, Inc.
 
Docker Networking Overview
Docker Networking OverviewDocker Networking Overview
Docker Networking OverviewSreenivas Makam
 
Docker Compose by Aanand Prasad
Docker Compose by Aanand Prasad Docker Compose by Aanand Prasad
Docker Compose by Aanand Prasad Docker, Inc.
 
Docker introduction &amp; benefits
Docker introduction &amp; benefitsDocker introduction &amp; benefits
Docker introduction &amp; benefitsAmit Manwade
 
Docker introduction for the beginners
Docker introduction for the beginnersDocker introduction for the beginners
Docker introduction for the beginnersJuneyoung Oh
 
How to write a Dockerfile
How to write a DockerfileHow to write a Dockerfile
How to write a DockerfileKnoldus Inc.
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação DockerAndré Justi
 
Introduction to Docker Compose | Docker Intermediate Workshop
Introduction to Docker Compose | Docker Intermediate WorkshopIntroduction to Docker Compose | Docker Intermediate Workshop
Introduction to Docker Compose | Docker Intermediate WorkshopAjeet Singh Raina
 
Kubernetes in Docker
Kubernetes in DockerKubernetes in Docker
Kubernetes in DockerDocker, Inc.
 
Networking in Docker
Networking in DockerNetworking in Docker
Networking in DockerKnoldus Inc.
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to DockerAditya Konarde
 

What's hot (20)

Introduction to Docker - VIT Campus
Introduction to Docker - VIT CampusIntroduction to Docker - VIT Campus
Introduction to Docker - VIT Campus
 
Docker
DockerDocker
Docker
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to Docker
 
Docker Networking Overview
Docker Networking OverviewDocker Networking Overview
Docker Networking Overview
 
Docker Compose by Aanand Prasad
Docker Compose by Aanand Prasad Docker Compose by Aanand Prasad
Docker Compose by Aanand Prasad
 
Docker Basics
Docker BasicsDocker Basics
Docker Basics
 
Terraform Basics
Terraform BasicsTerraform Basics
Terraform Basics
 
Docker introduction &amp; benefits
Docker introduction &amp; benefitsDocker introduction &amp; benefits
Docker introduction &amp; benefits
 
Docker introduction for the beginners
Docker introduction for the beginnersDocker introduction for the beginners
Docker introduction for the beginners
 
How to write a Dockerfile
How to write a DockerfileHow to write a Dockerfile
How to write a Dockerfile
 
Docker compose
Docker composeDocker compose
Docker compose
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
What is Docker
What is DockerWhat is Docker
What is Docker
 
Introduction to Docker Compose | Docker Intermediate Workshop
Introduction to Docker Compose | Docker Intermediate WorkshopIntroduction to Docker Compose | Docker Intermediate Workshop
Introduction to Docker Compose | Docker Intermediate Workshop
 
Kubernetes in Docker
Kubernetes in DockerKubernetes in Docker
Kubernetes in Docker
 
Dockerfile
Dockerfile Dockerfile
Dockerfile
 
Networking in Docker
Networking in DockerNetworking in Docker
Networking in Docker
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 

Similar to BERKENALAN DENGAN DOCKER

Docker Application Deployment.pptx
Docker Application Deployment.pptxDocker Application Deployment.pptx
Docker Application Deployment.pptxannonymoushacker2
 
Docker
DockerDocker
Dockerrija21
 
Podman - The Next Generation of Linux Container Tools
Podman - The Next Generation of Linux Container ToolsPodman - The Next Generation of Linux Container Tools
Podman - The Next Generation of Linux Container ToolsI Putu Hariyadi
 
Introduction on Android programming Tutorial
Introduction on Android programming TutorialIntroduction on Android programming Tutorial
Introduction on Android programming TutorialDimas Prawira
 
Install mongodb di docker
Install mongodb di dockerInstall mongodb di docker
Install mongodb di dockerAgus Supriatna
 
Pemrograman Mobile Android (Modul II)
Pemrograman Mobile Android (Modul II)Pemrograman Mobile Android (Modul II)
Pemrograman Mobile Android (Modul II)dikwan_moeis
 
Jquery ppt
Jquery pptJquery ppt
Jquery ppt044249
 
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...DicodingEvent
 
Squid proxy-server
Squid proxy-serverSquid proxy-server
Squid proxy-serverDwi Wahyudi
 
konversi suhu dengan eclipse
konversi suhu dengan eclipsekonversi suhu dengan eclipse
konversi suhu dengan eclipseWidyan Sastro
 
Pengenalan android ndk
Pengenalan android ndkPengenalan android ndk
Pengenalan android ndkGoogle
 
Monitoring sistem dengan graphite dan grafana host di docker pada ubuntu 18
Monitoring sistem dengan graphite dan grafana host di docker pada ubuntu 18Monitoring sistem dengan graphite dan grafana host di docker pada ubuntu 18
Monitoring sistem dengan graphite dan grafana host di docker pada ubuntu 18syamsulhidayat28
 
Monitoring sistem dengan graphite dan grafana host di docker pada ubuntu 18
Monitoring sistem dengan graphite dan grafana host di docker pada ubuntu 18Monitoring sistem dengan graphite dan grafana host di docker pada ubuntu 18
Monitoring sistem dengan graphite dan grafana host di docker pada ubuntu 18syamsulhidayat28
 
Kubernetes Fundamentals.pptx
Kubernetes Fundamentals.pptxKubernetes Fundamentals.pptx
Kubernetes Fundamentals.pptxannonymoushacker2
 
CRUD pada Android Studio menggunakan MySQL
CRUD pada Android Studio menggunakan MySQLCRUD pada Android Studio menggunakan MySQL
CRUD pada Android Studio menggunakan MySQLLusiana Diyan
 
Pemrograman android
Pemrograman androidPemrograman android
Pemrograman androidMdeno Akbar
 

Similar to BERKENALAN DENGAN DOCKER (20)

Docker Application Deployment.pptx
Docker Application Deployment.pptxDocker Application Deployment.pptx
Docker Application Deployment.pptx
 
Docker
DockerDocker
Docker
 
Podman - The Next Generation of Linux Container Tools
Podman - The Next Generation of Linux Container ToolsPodman - The Next Generation of Linux Container Tools
Podman - The Next Generation of Linux Container Tools
 
Introduction on Android programming Tutorial
Introduction on Android programming TutorialIntroduction on Android programming Tutorial
Introduction on Android programming Tutorial
 
Install mongodb di docker
Install mongodb di dockerInstall mongodb di docker
Install mongodb di docker
 
Pemrograman Mobile Android (Modul II)
Pemrograman Mobile Android (Modul II)Pemrograman Mobile Android (Modul II)
Pemrograman Mobile Android (Modul II)
 
Jquery ppt
Jquery pptJquery ppt
Jquery ppt
 
Ppt jquery
Ppt jqueryPpt jquery
Ppt jquery
 
Jquery ppt
Jquery pptJquery ppt
Jquery ppt
 
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
 
201012101edit
201012101edit201012101edit
201012101edit
 
Squid proxy-server
Squid proxy-serverSquid proxy-server
Squid proxy-server
 
konversi suhu dengan eclipse
konversi suhu dengan eclipsekonversi suhu dengan eclipse
konversi suhu dengan eclipse
 
Pengenalan android ndk
Pengenalan android ndkPengenalan android ndk
Pengenalan android ndk
 
Monitoring sistem dengan graphite dan grafana host di docker pada ubuntu 18
Monitoring sistem dengan graphite dan grafana host di docker pada ubuntu 18Monitoring sistem dengan graphite dan grafana host di docker pada ubuntu 18
Monitoring sistem dengan graphite dan grafana host di docker pada ubuntu 18
 
Monitoring sistem dengan graphite dan grafana host di docker pada ubuntu 18
Monitoring sistem dengan graphite dan grafana host di docker pada ubuntu 18Monitoring sistem dengan graphite dan grafana host di docker pada ubuntu 18
Monitoring sistem dengan graphite dan grafana host di docker pada ubuntu 18
 
Kubernetes Fundamentals.pptx
Kubernetes Fundamentals.pptxKubernetes Fundamentals.pptx
Kubernetes Fundamentals.pptx
 
Mari belajar vue js
Mari belajar vue jsMari belajar vue js
Mari belajar vue js
 
CRUD pada Android Studio menggunakan MySQL
CRUD pada Android Studio menggunakan MySQLCRUD pada Android Studio menggunakan MySQL
CRUD pada Android Studio menggunakan MySQL
 
Pemrograman android
Pemrograman androidPemrograman android
Pemrograman android
 

BERKENALAN DENGAN DOCKER

  • 1. Berkenalan dengan Docker Qassandra Chaidir @qassandrach DSC Lead Universitas Trilogi 2019
  • 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
  • 5. Docker? Container? Kenapa container? Apa fungsinya? Gimana cara pakenya?
  • 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
  • 11. ● Docker Image (build-time) ● Docker Container (Run-time) ● Docker Hub (Registry)
  • 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
  • 27. docker build -t bulletin:1 . Membuat docker image Menjalankan docker container docker run -d -p 8084:8080 --name bulletin bulletin:1 Level Up! (optional) -->
  • 28. docker tag bulletin:1 qassandrach/bulletin:1 Mengupload docker image ke docker hub Menjalankan docker container docker push qassandrach/bulletin:1 Memberikan tag pada image Docker Hub login Docker login
  • 29. Sumber ● Docker Deep Dive by Nigel Pouton ● docs.docker.com ● kubernetes.io ● Codepolitan ● https://medium.com/faun/everything-you-need-to-know-about-containers-7655badb4307