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
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
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
$ 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
Cek Container yang Berjalan
$ sudo docker container ls
Kurang lebih seperti ini informasi yang diterima, bahwasanya container sedang berjalan pada masing-masing port.
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}