Container

Hai semuanya, apa kabar? Kali ini saya mau nulis tentang container. Sebenarnya dulu juga saya pernah nulis sih hehe. Saya mulai belajar lebih banyak tentang container pas saya coba Docker dan juga Proxmox VE. Kenapa kadang container (CT aja biar lebih singkat) dibutuhkan? Kenapa gak pakai VM aja?

Salah satu kendala yang bisa dihadapi adalah terkait konflik dependensi. Misalnya dalam sebuah VM, aplikasi A membutuhkan library versi 1 namun aplikasi B membutuhkan library versi 2. Apabila kita ingin menjalankan kedua aplikasi tersebut pada VM yang sama, salah satu aplikasi bisa saja gagal berjalan karena versi library yang tidak cocok/bentrok.

Untuk mengatasi hal ini, bisa saja kita buat VM masing-masing sesuai dengan aplikasi yang dibutuhkan. Misalnya apabila dalam case ini kita ingin menjalankan aplikasi A dan aplikasi B, maka kita buat saja dua buah VM. Tapi, penggunaan VM bisa dibilang berat karena tiap VM memerlukan kernel dan OS-nya sendiri

CT adalah solusi untuk mengatasi permasalahan ini. CT adalah teknologi yang memungkinkan kita menjalankan aplikasi beserta dependensi yang dibutuhkan dan terisolasi dari instance atau CT lain. Untuk OS dan kernel-nya, CT menggunakan kernel dan OS milik host (shared resource).

Penggunaan CT relatif lebih ringan dan cepat karena kernel dan OS-nya “didapatkan” dari host dan “hanya membawa” libraries dan dependencies yang dibutuhkan. Proses deploy dan menjalankan CT juga jauh lebih cepat dibandingkan VM.
Pada CT, proses yang berjalan, file system, dan jaringan dapat dipisahkan dari CT lain dan konflik dependensi antar CT dapat dihindari.

Hal-hal tersebut membuat penggunaan CT menjadi lebih portable (bisa dijalankan di banyak platform), efisien (penggunaan resource lebih minimal), konsisten, dan skalabel (lebih mudah apabila ingin membuat banyak CT).
Beberapa CT tools yang didukung di RHEL antara lain adalah Podman (default), Buildan. dan Skopeo.

Tulisan kali ini sampai di sini dulu ya. Sampai jumpa. Bye.

Leave a Reply

Your email address will not be published. Required fields are marked *