Dalam membangun software, kita kerap membutuhkan third party library (misalnya library untuk membaca/mempublish event stream, atau untuk memanipulasi database).

Oleh sebab itu, saat kita ingin men-deploy sebuah software, kita juga perlu menyertakan third party libraries yang kita pakai.

Sayangnya, library-library yang kita pakai, belum tentu tersedia/bisa diinstall di komputer tujuan. Salah satu penyebabnya, mungkin karena di komputer tujuan sudah tersedia library versi yang lebih baru/lama.

Atau mungkin juga, kita men-deploy dua aplikasi yang membutuhkan dependency yang berbeda. Misalnya, ada aplikasi lama yang memakai PHP 5 dan ada aplikasi baru yang memakai PHP 8. Dalam banyak kasus, kedua aplikasi ini harus berjalan berdampingan.

Menginstall dua versi PHP yang berbeda di satu komputer kadang-kadang tidaklah semudah kelihatannya.

Untuk mengatasi permasalahan-permasalahan di atas (developer sering beralibi: it works on my machine), maka kita bisa menggunakan virtual machine (seperti virtualbox/vmware/vagrant), ataupun container (docker/podman)

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/961a6e4f-37f4-4a9d-894f-fb7631cec710/Untitled.png

Perbedaan container dan VM terletak di level virtualisasi nya. Container biasanya masih berbagi OS dengan host, sedangkan VM biasanya mengemulasi OS sendiri di atas host.

Akibatnya, container seringkali lebih ringan daripada VM.

Contoh Containerization (Docker)