Table of Content

Tutorial Devops dengan Docker Lengkap A-Z

Tutorial Devops dengan Docker

Betariko.com - Mari kita lihat sesuatu yang membuat DevOps membantu proses bisnis menjadi lebih mudah. Mengapa containerization sangat diperlukan? dan bagaimana itu membuat keberadaannya membuat pekerjaan lebih mudah?

DevOps, Docker dan Containerization

Dalam sebuah aplikasi, kita berada di dunia microservices. Akan ada banyak ratusan Microservices, beberapa diantaranya terdapat bagian yang di buat dari Java. Kemudian beberapa lainnya mungkin dibuat dari Python. 



Ruang untuk penerapan yang diperlukan untuk pemrosesan aplikasi berbasis Javascript, akan berbeda dari ruang yang kita perlukan untuk menjalankan bagian aplikasi Java atau Python.

Prosedur penyebarannya mungkin juga sangat bervariasi antara aplikasi yang berbeda. Jika kita mencoba untuk melakukan proses otomatis penyediaan server serta mengkonfigurasinya untuk microservices. Maka akan memerlukan konfigurasi serta skrip yang berbeda. 

Pertanyaannya, apakah ada cara agar memberikan ruang pada masing-masing microservices, dan prosedur penerapan yang sama untuk pengguna microservices?

Disinilah peran DevOps dalam memberikan solusi luar biasa. Setelah memiliki aplikasi atau layanan mikro, kita dapat membuat simulasi Docker yang berisi layanan Mikro.



Setelah membuat simulasi gambar Docker, tidak masalah apakah nantinya docker berisi aplikasi python atau javascript. Anda menjalankan dengan cara yang sama, terlepas dari gambaran docker. Setelah Anda menggunakan container, infrastruktur kode menjadi sangat sederhana. 

Kita dapat menyediakan beberapa kelompok server yang memiliki runtime container yang sudah diinstall didalamnya, dan dapat langsung menyebarkan container kedalamnya. 

Docker Arsitektur

Kurang lebih seperti pada gambar dibawah ini, arsitektur Docker.

Tutorial Devops dengan Docker

Install Docker

Untuk menginstal Docker Engine, Anda memerlukan versi 64-bit dari salah satu versi Ubuntu ini:

  • Ubuntu Jammy 22.04 (LTS)
  • Ubuntu Imish 21.10
  • Ubuntu Focal 20.04 (LTS)
  • Ubuntu Bionic 18.04 (LTS)

Docker Engine didukung pada arsitektur x86_64 (atau amd64), armhf, arm64, dan s390x.

Versi Docker yang lebih lama disebut docker, docker.io, atau docker-engine. Jika ini diinstal, hapus instalannya:

$ sudo apt-get remove docker docker-engine docker.io containerd runc

Siapkan repositori 

$ sudo apt-get update

$ sudo apt-get install \ 

    ca-certificates \

    curl \

    gnupg \

    lsb-release

Tambahkan kunci GPG resmi Docker

$ sudo mkdir -p /etc/apt/keyrings

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 

Mengatur repositori Docker:

$ echo \  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 

Install Docker

$ sudo apt-get update

$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin 

$ sudo docker run hello-world 

Cek Versi Docker

root@betariko:~# docker -v

Docker version 20.10.17, build 100c701

Selamat, sekarang sudah berhasil menginstall Docker dan siap digunakan. 

Langkah Pertama DevOps Use Case dengan Docker

Menjalankan container python dari repositori.

root@betariko:~# docker run -p 5000:5000 betariko/hello-world-python:0.0.1.RELEASE

Unable to find image 'betariko/hello-world-python:0.0.1.RELEASE' locally

0.0.1.RELEASE: Pulling from in28min/hello-world-python

21c83c524219: Pull complete 

9a80d14c35bd: Pull complete 

0d32a27dde5a: Pull complete 

2cb80a514e07: Pull complete 

d5d3b19aaadd: Pull complete 

694c09e178f0: Pull complete 

2163a4c6fcc6: Pull complete 

26893ad78bb3: Pull complete 

Digest: sha256:a77f9165a81a3650f0211f823f7a5cdfdcb7b7e458cd193ea644ea10fb476fa2

Status: Downloaded newer image for in28min/hello-world-python:0.0.1.RELEASE

 * Serving Flask app 'launch' (lazy loading)

 * Environment: production

   WARNING: This is a development server. Do not use it in a production deployment.

   Use a production WSGI server instead.

 * Debug mode: on

 * Running on all addresses (0.0.0.0)

   WARNING: This is a development server. Do not use it in a production deployment.

 * Running on http://127.0.0.1:5000

 * Running on http://172.17.0.2:5000 (Press CTRL+C to quit)

 * Restarting with stat

 * Debugger is active!

 * Debugger PIN: 114-623-127

 

Cek Container Docker yang Aktif

Masukkan perintah berikut untuk melihat container yang aktif.

$ sudo docker container ls

CONTAINER ID   IMAGE                                      COMMAND                  CREATED          STATUS          PORTS                                       NAMES

c61d5666dd11   betariko/hello-world-python:0.0.1.RELEASE   "docker-entrypoint.s…"   13 seconds ago   Up 11 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   focused_nightingale


Menjalankan Lebih dari Satu Container

Ketika ingin menjalankan seluruh container yang kamu punya, kurang lebih perintahnya seperti ini 

# docker run -p 5000:5000 betariko/hello-world-python:0.0.1.RELEASE
# docker run -p 5001:5000 betariko/hello-world-java:0.0.1.RELEASE
# docker run -p 5002:5000 betariko/hello-world-nodejs:0.0.1.RELEASE

Pastikan bahwa port disesuaikan, karena jika tidak container tidak dapat dijalankan. 

Cek Container yang Berjalan


$ sudo docker container ls

Kurang lebih seperti ini informasi yang diterima, bahwasanya container sedang berjalan pada masing-masing port.  


CONTAINER ID   IMAGE                                      COMMAND                  CREATED         STATUS         PORTS                                       NAMES
f02188f64cd3   betariko/hello-world-java:0.0.1.RELEASE     "sh -c 'java -jar /h…"   3 minutes ago   Up 3 minutes   0.0.0.0:5002->5000/tcp, :::5002->5000/tcp   naughty_chandrasekhar
897d0fa3087c   betariko/hello-world-java:0.0.1.RELEASE     "sh -c 'java -jar /h…"   5 minutes ago   Up 5 minutes   0.0.0.0:5001->5000/tcp, :::5001->5000/tcp   mystifying_lichterman
3c3c1ad6318b   betariko/hello-world-python:0.0.1.RELEASE   "/bin/sh -c 'python …"   6 minutes ago   Up 6 minutes   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   agitated_mcclintock

Menjalankan Lebih dari Satu Container di Satu Terminal


# docker run -d -p 5001:5000 betariko/hello-world-nodejs:0.0.1.RELEASE

# docker run -d -p 5002:5000 betariko/hello-world-python:0.0.1.RELEASE

# docker run -d -p 5003:5000 betariko/hello-world-java:0.0.1.RELEASE 

Cek Logs Container 


$ docker logs {container id}

Cek Docker Images

$ docker images

Cek Docker Container Running

$ docker container ls

Cek Docker Container Running dan Shutdown 

$ docker container ls -a 

Stop Container 

$ docker container stop {id container}

 

Hasil yang baik, berawal dari proses yang baik.