Perkenalan Dasar Tentang Container, VM, dan Docker - HeyTUX!

Breaking

Saturday, September 23, 2017

Perkenalan Dasar Tentang Container, VM, dan Docker

Bagi para programmer atau IT enthusiast, istilah docker mungkin familiar sebagai tool yang dapat membantu kita melakukan tiga hal pada aplikasi kita, yaitu pack, ship, dan run. Agak aneh jika IT enthusiast tidak mengetahui docker, dengan semua perhatian kini beralih pada docker. Bahkan, korporasi besar seperti Google, VMWare, dan Amazon juga membangun micro-service mereka dengan dukungan docker.

Terlepas dari pernah atau tidaknya Anda mendengar tentang docker, pemahaman akan konsep dasar docker sepertinya cukup penting untuk diketahui. Apakah yang dimaksud docker, bagaimana perbedaan docker container dengan virtual machine (VM), dan prinsip kerja docker. Walau banyak sekali pembahasan dan artikel yang memuat tentang dokumentasi docker, sepertinya belum banyak artikel yang memuat penggambaran sederhana mengenai docker. Oleh karena itu, artikel ini dibuat dengan harapan para pembaca lebih memahami konsep docker dan berlaku pula bagi para pemula yang ingin mengetahui konsep docker.

Jadi, mari kita mulai dari pemahaman dasar tentang container dan VM.

Apakah yang dimaksud "container" dan "VM"?

Container dan VM memiliki tujuan yang mirip: untuk mengisolasi aplikasi dan dependencies mereka ke dalam unit mandiri yang dapat berfungsi di mana saja.

Selain itu, container dan VM mengurangi kebutuhan hardware secara fisik, sehingga penggunaan resource komputerisasi lebih efisien dari segi biaya, sumber daya, dan penggunaan listrik.

Perbedaan utama dari keduanya hanya ada di dalam pendekatan arsitektural mereka. Mari kita lihat lebih dekat.
Virtual Machine

Sebuah VM pada dasarnya adalah tiruan dari komputer fisik yang mengeksekusi program seperti komputer aslinya. VM bekerja di atas mesin fisik atau hardware, menggunakan "hypervisor". Sebagai gantinya, hypervisor ini berjalan di atas mesin host (inang) atau biasa disebut "bare metal".

Hypervisor bisa berupa software, firmware, atau hardware yang menjalankan VM di atasnya. Hypervisor sendiri berjalan di atas hardware asli atau fisik, biasa disebut mesin host. Mesin yang berfungsi sebagai inang ini menyediakan resource atau kebutuhan komputerisasi VM, termasuk RAM dan CPU. Resource kemudian dibagi-bagi antar VM yang ada di atas mesin host dan bisa disebarkan sesuai keinginan atau kebutuhan. Jadi, jika salah satu VM ingin menjalankan aplikasi yang lebih berat daripada VM lain, resource yang lebih banyak juga akan dialokasikan pada VM tersebut.

VM yang berjalan di atas mesin terkadang disebut sebagai "guest machine". VM juga menjalankan aplikasi ataupun segala macam kebutuhan VM, juga membawa sekumpulan hardware "tiruan" atau "virtualized", seperti adapter network yang merupakan tiruan, hardware virtual, RAM, dan bahkan CPU virtual. Sehingga dengan sistem lengkap ini, sebenarnya VM sudah bisa menjalankan sistem operasinya secara berdikari. Dari dalam VM, guest machine terkesan seperti unit tersendiri, tidak terlihat seperti virtual saat kita memakainya. Sedangkan, dari luar VM, kita tahu bahwa VM ini berjalan di atas mesin host dan saling berbagi resource dengan VM lain yang "satu inang" dengannya.
 
Container

Sekarang, mari kita beralih ke pembahasan mengenai container. Tidak seperti VM yang menyediakan virtualisasi perangkat keras, container menyediakan virtualisasi di level sistem operasi, dengan memisahkan user space. Namun, secara tujuan, container terlihat seperti VM. Container juga memiliki ruang tersendiri untuk pemrosesan data, dapat mengeksekusi perintah sebagai root, dan memiliki interface jaringan dan alamat IP tersendiri. Container juga bisa dikonfigurasi dengan routing khusus dan aturan iptables atau firewall. Container juga dapat ditambahkan storage, dapat mounting storage, dan masih banyak lagi. Jadi, kita akan membahas lebih lanjut setelah kita membuka istilah container di bawah ini.

Salah satu perbedaan terbesar antara container dengan VM adalah container berbagi kernel sistem milik host dengan container lainnya. Sedangkan, VM yang memiliki sistem operasi masing-masing, tentu saja memiliki sistem kernel masing-masing pula.

Diagram di atas menunjukkan bahwa container hanya membagi user space, dan bukan kernelnya atau hardware virtual seperti yang dilakukan oleh VM. Setiap container mengisolasi ruang kerja user, namun mengizinkan beberapa container untuk berjalan di atas satu mesin host. Kita dapat melihat bahwa para container ini berbagi level sistem operasi. Bagian yang terpisah hanyalah bin dan lib. Inilah yang menyebabkan container sangat ringan.

Jadi, di manakah posisi docker?

Docker adalah proyek open-source berdasarkan container Linux. Docker memakai fitur kernel Linux untuk membentuk container di atas sistem operasi.

Container bukanlah hal baru; Google sendiri sudah pernah memakai teknologi container hasil pengembangan mereka sendiri beberapa tahun lamanya. Teknologi Linux container lainnya juga ada, seperti sistem zoning di Solaris, BSD jail, dan LXC, yang sudah ada lebih dulu dibanding container Docker.

Jadi, mengapa docker tiba-tiba menjadi primadona?

1. Mudah Digunakan

Docker mudah digunakan oleh siapa saja, baik developer software, system admin, maupun IT architect yang mengambil keuntungan container untuk membuat dan melakukan testing aplikasi secara cepat. Docker mengizinkan siapapun untuk mengemas aplikasi di laptop atau komputer pribadi mereka, sehingga dapat dijalankan di atas public cloud, private cloud, atau bahkan bare metal. Mantranya adalah: "build once, run anywhere."

2. Kecepatan

Container docker lebih ringan dan cepat. Karena container hanyalah suatu environment yang berjalan dengan kernel, container memakai resource yang tidak begitu banyak. Container docker dapat dibuat dan dijalankan hanya dalam hitungan detik, jika dibandingkan dengan VM yang mana menyala lebih lama karena VM harus menjalankan sistem operasi virtual jika sebelumnya dalam kondisi belum menyala. Dan ketika sudah menyala pun, kejadian kurangnya resource atau hang, kerap terjadi (karena VM tersebut menyala terus).

3. Docker Hub

Fitur ini menguntungkan pengguna docker karena ekosistemnya yang sudah meluas dan berisi ribuan bahkan puluh ribuan images. Kita dapat menjalankan images berisi macam-macam aplikasi yang kita inginkan, dengan satu command docker standar, dan voila! Images tersebut akan terunduh ke laptop kita dan langsung terpasang tanpa harus memodifikasi file atau konfigurasi lagi.

4. Modularitas dan Skalabilitas
Docker memudahkan kita menerapkan fungsi aplikasi ke dalam masing-masing container yang berbeda tanpa harus memasang sistem operasi baru. Misalnya, kita ingin menjalankan database di satu container, lalu web server dan PHP di container lain, atau sistem caching Redis di container yang lain lagi. Semua bisa ditarik dari Docker Hub dengan mudah, tanpa harus melakukan instalasi sistem operasi hanya untuk memasang fungsi aplikasi yang berbeda tersebut.

Dengan docker, akan lebih mudah menghubungkan masing-masing container ini saat membuat suatu aplikasi yang Anda inginkan.

Kira-kira begitulah pembahasan dasar mengenai perbedaan container dan VM juga sedikit pembahasan docker. Pada artikel mendatang, kami akan membahas tentang konsep arsitektur dasar docker dan tutorial dalam menggunakan docker.

Terima kasih sudah membaca! Jangan lupa tinggalkan komentar Anda dan Anda juga bisa request tutorial atau pembahasan yang Anda inginkan dengan meninggalkan komentar di sini.

Oh ya, yang terakhir... Ada salam dari ikan paus. ;)

Sumber Gambar: www.docker.com

No comments:

Post Top Ad

Responsive Ads Here