Mengenal Teknologi Kontainerisasi Dengan Docker

Tahukah Anda? Saat ini, popularitas teknologi kontainerisasi semakin banyak di kalangan profesional IT. Tuntutan untuk mengenal teknologi kontainerisasi menjadi penting bagi para developer untuk memahami dasar-dasar kontainerisasi.

Dasar dari berjalannya aplikasi tentu saja membutuhkan server, jaringan, infrastruktur hardware dan storage. Dengan teknologi virtualisasi kita bisa menggunakan containers sebagai pengganti itu semua. Dalam tulisan ini, kita akan mengenal teknologi kontainerisasi dengan Docker.

Mengenal Kontainerisasi

Sebelum membahas Docker, kita akan mengenal teknologi kontainerisasi terlebih dahulu. Salah satu tujuan pengembangan perangkat lunak modern saat ini adalah untuk menjaga aplikasi berjalan pada host atau cluster dan kemudian diisolasi agar tidak mengganggu operasi dan proses pemeliharaan satu sama lain. Hal ini akan cukup sulit jika dijalankan dalam satu environment (hardware yang sama), dimana setiap aplikasi yang dikembangkan memiliki library atau komponen yang perlu dijalankan.

Salah satu solusi untuk masalah ini adalah dengan menggunakan teknologi Virtual Machine, yang dapat menjaga aplikasi pada hardware yang sama tetapi sepenuhnya terpisah dan juga mengurangi konflik antara komponen aplikasi yang sedang dikembangkan. Sayangnya, Virtual Machine memiliki ukuran file yang besar karena masing-masing VM membutuhkan OS sendiri, biasanya sampai berukuran GB.

Oleh sebab itu, solusi terbaru untuk masalah tersebut adalah menggunakan teknologi kontainerisasi atau Containerization. Container adalah paket atau aplikasi yang mengandalkan isolasi virtual untuk menjalankan aplikasi yang dikembangkan dapat menjalankan sistem operasi kernel secara simultan tanpa memerlukan mesin virtual (VMs).

Proses isolasi virtual sebenarnya sudah ada pada tahun 60-70an dan dikembangkan sebagai bagian dari Linux. Saat itu isolasi proses dilakukan pada chroot. Bentuk modernnya saat ini diekspresikan dalam bentuk containerization, seperti pada aplikasi Docker dan LXC. Kedua jenis bentuk container ini menjadi dasar bagi developer untuk menaruh aplikasi dari infrastruktur yang ada dibawahnya.

Baca Juga:  Akses Data Berkinerja Tinggi Dengan Dapper ORM

VM menggunakan OS, berbeda dengan Container yang menggunakan Image. Image ini dianalogikan sebagai disk dimana aplikasi/sistem operasi sudah terkonfigurasikan dapat berjalan. Sebagai contohnya, Jika kita ingin menjalankan web server yang memiliki database dan aplikasi server didalamnya. Kita bisa menggunakan teknologi container ini yang dimana berjalan masing masing.

Cara Kerja Kontainerisasi

Perbedaan Arsitektur VM dan Container

Container menyediakan fleksibilitas secara keseluruhan dibanding kita menggunakan server secara fisik atau virtual machine. Container dapat langsung berjalan diatas Sistem Operasi (OS) tanpa menggunakan hypervisor. Seperti pada gambar diatas, container berjalan secara langsung diatas Sistem Operasi (OS). Container dapat membagi resource pada OS beserta fungsinya. Hal ini sangat menguntungkan secara performa dan penggunaan resource dikarenakan aplikasi yang digunakan hanya menggunakan resource berdasarkan apa yang dipakai saja.

Perbedaan VM vs Container

Kedua teknologi ini sama-sama berjalan diatas virtualisasi. Namun, antara container dan virtual machine memiliki perbedaan yang mendasar.

1. Arsitektur

VM hanya dapat berjalan pada hypervisor. Sedangkan Container tidak. Hal inilah yang menjadi perbedaan dasar dari arsitektur VM dan Container. Container dapat berjalan langsung diatas Sistem Operasi. Sedangkan VM tidak.

2. Alokasi Resource

Virtual Machine mengambil resource berdasarkan pengaturan yang sudah ditentukan saat instalasi. Alokasi ini bersifat terisolasi. Sebagai contohnya VM 1 memiliki pengaturan RAM 2 GB dan kapasitas HDD 120 GB. Saat VM 1 dijalankan. VM 1 hanya bisa menggunakan RAM maksimal sebanyak 2 GB. Ketika VM 1 hanya menggunakan sedikit penggunaan RAM (misalnya hanya 512 MB). Resource sisa dari penggunaan tersebut tetap menjadi milik VM 1 dan tidak dapat digunakan dengan VM lainnya.

Hal ini berbeda dengan container. Container memiliki alokasi resource yang dapat dibagi langsung oleh Host Server itu sendiri. Container akan mengambil alokasi resource yang ada di Hardware sesuai dengan yang container butuhkan.

Baca Juga:  NFC vs Bluetooth: Apa Bedanya?

3. Penggunaan Kernel

Pada dasarnya VM menggunakan kernel tersendiri untuk menjalankan aplikasi didalamnya. Sedangkan container tidak diizinkan untuk mengakses kernel.

Apa itu Docker?

Arsitektur Docker

Docker adalah proyek open source yang memudahkan untuk membuat container dan aplikasi berbasis container. Awalnya dibangun untuk Linux, namun Docker sekarang dapat berjalan di Windows dan MacOS. Untuk memahami cara kerja Docker, mari kita lihat beberapa komponen yang akan Anda gunakan untuk membuat aplikasi Docker Container.

Dockerfile

Setiap Container Docker dimulai dengan Dockerfile. Dockerfile adalah file teks yang ditulis dalam sintaks yang mencakup instruksi untuk membangun Docker Image (akan dibahas selanjutnya). Dockerfile menentukan sistem operasi yang akan mendasari container, juga dengan bahasa yang digunakan, environment variables, lokasi file dan direktori, port jaringan dan komponen lain yang diperlukan.

Docker Image

Setelah membuat Dockerfile, Anda perlu menjalankan perintah Docker build untuk membuat Docker Image berdasarkan Dockerfile tersebut. Sedangkan Dockerfile adalah serangkaian instruksi yang memberi tahu build bagaimana membuat image.

Docker Image merupakan template dasar untuk Docker Container, sebuah image biasanya berisi OS maupun aplikasi yang telah diinstall dan telah jadi. Image ini digunakan untuk menjalankan container, di docker index terdapat banyak image yang bisa kita pilih dan kita gunakan sebagai base image.

Docker Run

Docker Run adalah sebuah utilitas (berupa perintah) yang berfungsi untuk menjalankan Container. Setiap container adalah instance dari sebuah Image. Container dirancang untuk penggunaan sementara, namun bisa juga di berhentikan dan dimulai kembali dengan kondisi yang sama tanpa merubah konfigurasinya. Beberapa container dari image yang sama, dapat dijalankan secara bersamaan (selama setiap container memiliki nama yang unik).

Baca Juga:  Predator Thronos, Pelopor Kursi Gaming Berteknologi Mutakhir

Docker Registry

Docker Registry merupakan tempat penyimpanan (public atau private) di mana pengembang dapat mengunggah dan mengunduh Docker Image. Docker Registry yang bersifat public disebut dengan Docker Hub. Disana, banyak Image yang sudah dibuat seperti MySQL, Nginx, PHP dan image lainnya.

Kesimpulan

Dengan teknologi kontainerisasi atau Containerization, proses pengembangan aplikasi akan sangat ringan dan cepat dibandingkan dengan Virtual Machine yang memilki artsitektur berbasis hypervisor. Besarnya overhead, hanya sebesar layanan aplikasi yang dijalankan pada container itu sendiri. Selain itu, para pengembang dapat menjalankan banyak container dalam satu hardware yang sama.