Apa itu Container - bagian 1
Pendahuluan
Topik mengenai temannya Container - yaitu Hypervisor bisa dilihat di sini
Containers sering sekali diperbincangkan orang IT, terutama ketika menyangkut dengan teknologi Cloud.
Banyak istilah terkait dengan containers, seperti :
- Docker, Docker Swarm
- Kubernetes
- Podman
- ContainerD
- LXC
- Apache Mesos
- OpenVZ
- cri-o
- Google Cloud Run
- AWS Fargate
- Rancher
- Openshift Container Platform
- Azure Container Instances
- dll
Apa sih itu Container dari sisi Virtualisasi IT ?
Ini adalah pertanyaan mendasar yang kalau kita cari di mesin pencarian akan menemukan banyak jawaban.
Tapi kebanyakan pengertiannya teknis sekali.., seperti misalnya dari halaman Docker:
A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another.
terjemahan bebas
Container adalah sebuah unit software yang membungkus kode program beserta library dan sistem pendukungnya dalam sebuah paket, sehingga bisa dijalankan dengan cepat dan tanpa halangan walaupun dipindahkan dari sebuah komputer ke komputer lainnya.
Hmmm.., mesti agak serius nih berfikirnya kalau pengertiannya seperti itu.
Kalau pengertian lengkapnya tentu saja harus teknis, agar bisa dibedakan dengan istilah yang semirip.
Penjelasannya juga pas sekali, umum dan mengena..
Tapi coba kita pakai pemisalan dari istilah awalnya sehingga bisa dimengerti dari sisi orang awam.
Container, meminjam istilah dari dunia transportasi.
Container di dunia Transportasi adalah sebuah tempat penyimpanan barang yang mudah dipindah-pindahkan.
Seperti ini …
Coba kita lihat karakteristiknya :
- Container dibuat dalam bentuk unit, yang tiap unitnya mempunyai pengaturan sendiri didalamnya, seperti pengatur suhu, kelembaban, dll.
- Container dibuat dalam bentuk yang hampir seragam.
- Kita tidak tahu isi lengkap dari container, kita cuma tahu dari labelnya mengenai isi secara umum dan cara mengaksesnya.
- Container ditujukan agar bisa dengan mudah dipindah-pindahkan, dari truk kontainer, ke kapal peti kemas, terminal peti kemas, dll.
- Container tidak bisa ditaruh sembarangan, harus menggunakan landasan yang sesuai dan dipakai bersama, seperti Dek Peti Kemas di kapal, dan Terminal Peti Kemas di Pelabuhan.
- Container tidak bisa berpindah sendiri, harus menggunakan Derek Peti Kemas yang disebut Portainer/Container Crane/Spreader.
Okee.. cukup pemisalannya..
Mari kita bahas yang terkait dengan IT nya langsung.
Containerization di dunia IT - Cloud
Containers di istilah cloud juga mirip dengan Container di dunia transportasi.
kembali lagi di pengertian Containers di awal artikel ini :
A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another.
maka kalau kita misalkan Containers di dunia IT dengan dunia transportasi, maka :
- Containers merupakan seperangkat aplikasi/software yang sudah dipaket dalam satu unit.
- Containers memiliki pengaturan masing-masing didalamnya, seperti konfigurasi environment variable, memori, cpu, dll. Walaupun dalam teorinya setiap containers bisa saja mengambil jatah memori, cpu, gpu sepuas-puasnya.
- Containers seperti dalam dunia transportasi, juga merupakan unit yang terisolasi dengan lingkungan luarnya. Kita bisa mengaksesnya dengan cara mengakses antarmuka yang di-expose/publish dari containernya sendiri. Misalnya memakai konfigurasi IP Address, port, DNS, firewall.
- Dalam dunia IT, container tidak hanya diam saja, tapi kita gunakan dalam menjalankan aplikasi.
- Kita tidak tahu isi lengkap dari container. Kita bisa tahu isinya dari label dan mengaksesnya informasinya melalui cara yang seragam. Misalnya dengan perintah docker inspect.
- Container ditujukan agar bisa dengan mudah dipindah-pindahkan/portability, tanpa khawatir ada yang tertinggal dari barang yang ada didalamnya, karena sudah dipaket dalam satu unit. Begitu pula di dunia IT, kita ingin aplikasi kita sudah sepaket dengan environment variablenya, jumlah memori, cpu, library, dan server yang ada didalamnya. Kita tidak mau ribet dengan mesti membongkar dulu isinya, trus mengeluarkan satu persatu, lalu ditaruh lagi di tempat lain.
- Container harus mempunyai tempat yang sesuai. Ini yang disebut sebagai Container Runtime Engine. Ini misalnya Docker, LXC, Podman, runC, CoreOS Rocket (rkt), dll.
- Agar container bisa dipindah-pindah, maka perlu tools untuk mengelolanya. Ini yang disebut sebagai Container Orchestration. Misalnya Kubenetes, Rancher, Docker Swarm, dll..
Begitulah pemisalannya..
Kita lanjut ke pengenalan secara teknisnya yaa.. Container - Part 2 ?