Mengenal Teknologi Containerization dengan Docker

 Apa sih Containerization itu?

Containerization itu sendiri adalah pendekatan dimana kita menjalankan multiple instances (containers) pada satu Operating System (OS) yang sama, dimana containers tersebut akan memiliki shared kernel.
Serupa dengan VM, dimana pada satu Host OS kita dapat menjalankan berbagai aplikasi lain yang terisolasi dari Host kita. Perbedaan utama antara virtualization dan containerization adalah pada virtualization kita menyalakan OS di dalam OS, sehingga secara resource dan performance akan lebih berat dibandingkan dengan containerization yang melakukan isolasi dari masing-masing aplikasi ke dalam virtual environment dengan shared kernel milik host. Tetapi bukan berarti virtualization adalah teknologi yang buruk, sebenarnya kedua teknologi tersebut memiliki tujuan yang sedikit berbeda. Kalau kita ingin memiliki environment yang sangat terisolasi satu sama lain, maka sebaiknya kita menggunakan VM. Apabila kita tidak perlu isolasi 100% maka containerization bisa menjadi pertimbangan.

Well sekilas sudah kita berbicara tentang arsitektur dan containerization, mari kita mulai membahas Docker. Docker adalah sebuah platform containerization yang sangat populer dan semakin populer. Docker memberikan kemudahan untuk menggunakan ataupun membangun 'isolated' environment untuk aplikasi. Penggunaan containerization dapat membantu kita dalam memahami konsep microservices, dimana satu container hanya untuk satu fungsi saja.



Bagaimana penggunaan Docker itu sendiri?
Docker dapat kita jalankan melalui terminal dengan command yang cukup sederhana, seperti pada gambar berikut.

Menyalakan dan mematikan sebuah container dapat dilakukan dengan command 'start' dan 'stop' melalui command line, demikian juga untuk melihat informasi container apa saja yang sedang berjalan dengan command 'docker ps'. 

Untuk memulai menggunakan Docker pun sesederhana melakukan download dan install docker, kemudian Docker dapat digunakan melalui command line. Serupa dengan virtualization yang membuat VM melalui image dari OS, containerization pada docker pun membutuhkan image untuk dapat menyalakan sebuah containers. Sebagai contoh, untuk dapat menjalankan 'docker start mysql' kita perlu memiliki image dari container tersebut terlebih dahulu, bisa melalui Docker Hub ataupun membuatnya sendiri dengan menggunakan Dockerfile. Setelah memiliki image terkait, kita bisa menjalankannya dengan menggunakan perintah 'docker run', dimana pada momen tersebut kita dapat melakukan berbagai konfigurasi seperti port forwarding, pemberian nama untuk container yang dibuat, bahkan melakukan pengaturan environment variable dari container tersebut.


Demikian hal-hal paling minimum yang perlu diketahui untuk memulai petualangan ke negeri Docker. Masih banyak command pada Docker yang dapat dieksplorasi, seperti 'docker save' dan 'docker load' yang sangat berguna dalam development. Fungsi dua command tersebut sangat sederhana, namun sangat membantu developer dalam satu tim untuk memiliki konfugurasi yang sama. Contoh sederhananya adalah ketika kita mengembangkan aplikasi, kita bisa menggunakan docker container untuk MySQL dan melakukan berbagai konfigurasi terkait database (mungkin mengatur user, privillege, dll). Karena kita menjalankan MySQL Containers, maka dengan menjalankan command 'docker save' kita bisa membagikan image tersebut pada rekan satu tim, sehingga mereka cukup menggunakan 'docker load' dan akan memiliki image dari MySQL containers yang telah dikonfigurasi, sehingga satu tim memiliki environment MySQL yang sama.

Sekian dulu untuk malam ini, semoga bermanfaat.
Selamat melakukan eksplorasi ke negeri Docker!

P.S.
Keuntungan lain dari penggunaan Docker adalah kita dapat menjalankan aplikasi yang mungkin tidak tersedia untuk OS tertentu, seperti tidak tersedianya Oracle Database untuk macOS. Berkat adanya images dari Oracle Database yang berjalan di atas Linux, maka pengguna macOS bisa tersenyum karena hal tersebut berarti macOS dapat menjalankan Oracle Database.

Komentar