Sedikit tentang Containerization

Adi Purnama
Note: Bagi yang udah familiar dengan konsep containerization dan Docker, bisa langsung skip ke section selanjutnya aja yaa.
***
Containerization, singkatnya adalah sebuah proses deployment, di mana aplikasi dan semua dependency-nya dibungkus ke dalam satu wadah yang sama.
Artinya, dependensi setiap bungkus tidak akan mempengaruhi bungkus yang lainnya. 2 bungkus tersebut terisolasi secara penuh satu sama lain.
Bungkus ini, istilah resminya adalah container. Kita sebut aja container ya untuk ke depannya.
Untuk mendefinisikan sebuah container isinya apa aja, perlu apa aja, dan bagaimana cara menjalankan aplikasi di dalam container, kita perlu suatu file. File tersebut adalah Dockerfile.
Hasil dari sebuah Dockerfile ini nggak langsung jadi sebuah container. Perlu satu step tambahan, yaitu build Docker image. Proses ini akan membuat sebuah image berdasarkan Dockerfile yang udah didefinisikan.
Lah, kenapa nggak langsung jadi container aja sih?
Kalau yang bikin Docker mikir begini, nanti aplikasi kita nggak bisa dilakukan versioning dong. Misal, di versi 1.0.0, kita bikin fitur A. Di versi 1.1.0, kita nambah fitur B. Kalau ternyata fitur B nya ngebug, bahaya. Nggak bisa balik lagi ke versi 1.0.0.
Docker image ini tujuan utamanya untuk versioning aplikasi kita. Hasil dari docker image yang di-run, baru deh, berupa container.
Jadi secara umum, proses containerization ini terdiri dari 3 tahap.
- Tentukan isi Dockerfile, sedemikian rupa sehingga aplikasi kita bisa berhasil dijalankan.
- Buat docker image berdasarkan Dockerfile tersebut
- Buat container berdasarkan docker image di poin 2.
Pembahasan lebih komprehensif bisa cek penjelasan dari AWS di sini.