Docker Orchestration
Halo, kali ini saya akan membahas mengenai Docker. Memang sebelumnya sudah dijelaskan pada blog saya yang ini dan digabung dengan CI/CD. Jadi kali ini kita akan lebih membahas mengenai bagaimana cara kerja Docker image secara merinci.
In a normal virtualized environment, one or more virtual machines run on top of a physical machine using a hypervisor like Xen, Hyper-V etc. Containers, on the other hand, run in user space on top of operating systems kernel. It can be called as OS level virtualization.
Dari kutipan tersebut, dapat disimpulkan kesamaan dari VM dan container sebagai berikut.
- Membutuhkan sistem host untuk berjalan
- Memiliki isolasi terhadap proses, jaringan, user, dll
- Bisa dikostumisasi sesuai dengan spesifikasi kebutuhan
- Disimpan sebagai image
Kemudian untuk perbedaan dari VM dan container, yaitu:
- Container biasanya hanya berisi kode aplikasi
- Container ketika dijalankan hanya menjalankan proses yang dibutuhkan oleh container tersebut
- Karena container tidak membutuhkan sistem operasi sendiri untuk berjalan, maka resource yang dibutuhkan lebih sedikit dibandingkan dengan VM
Container sendiri mulai booming baru-baru ini dengan adanya konsep arsitektur microservice yang artinya suatu aplikasi dipecah menjadi service yang lebih kecil dan loosely coupled. Tujuan dipecahnya aplikasi tersebut adalah modularitas yang nantinya meudahkan ketika memahami struktur, pengembangan, dan testing. Untuk lebih lengkapnya dapat dilihat pada link berikut ini.
From Code to Containerized Running App
Tools container yang sering digunakan saat ini adalah Docker. Docker ini juga kami gunakan dalam mata kuliah PPL ini. Pada bagian ini saya akan menjelaskan mengenai bagaimana membuat kode menjadi containerized running app.
- Pastikan membuat Dockerfile pada root directory dari project, jalankan Docker build beserta dengan nama image yang diinginkan
- Untuk mengecek apakah aplikasi sudah bisa dijalankan pada Docker container, gunakan docker run <nama image>. Perintah ini berfungsi untuk menjalankan docker image pada container di local
- Push Docker image ke Docker hub atau ke registry, pada PPL ini digunakan registry private dari PPL
- Buat container pada portainer PPL, pull image dari registry PPL
- Jalankan Docker image
Perintah untuk build dan push Docker image terdapat pada gitlab ci kelompok kami, lebih tepatnya pada bagian *_deploy
. Berikut ini salah satu contohnya
webapp_dev_deploy:
...
script:
- docker build -f webapp/Dockerfile -t registry.docker.ppl.cs.ui.ac.id/ppld7/webapp-dev:latest .
- docker push registry.docker.ppl.cs.ui.ac.id/ppld7/webapp-
Pada tag webapp_dev_deploy tersebut berfungsi untuk deployment saat proses development. Script berisi perintah untuk build image Docker dan push ke registry PPL Fasilkom, bukan Docker hub. Kemudian nantinya di Portainer, kita akan melakukan pull image dari registry Fasilkom dan run image tersebut. Berikut ini kira-kira tampilan Portainer.
Sekian penjelasan dari saya mengenai Docker, semoga dapat mencerahkan pemahaman anda mengenai cara kerja Docker. Sampai jumpa!!