Berkenalan dengan Docker - Part 1 : Apa itu Docker?

Kategori Artikel : IT Insight

07 July 2021

Berkenalan dengan Docker - Part 1 : Apa itu Docker?

Published in HIMIT PENS Medium - Jun 3, 2020
Writen by : Andika Ahmad Ramadhan

Sepertinya kita sudah tidak asing lagi ketika mendengar kata-kata Docker ini. Docker memang salah satu teknologi yang sedang populer digunakan oleh banyak kalangan, mulai dari komunitas atau penggiat IT sampai dengan level perusahaan besar sekalipun. Banyak sekali kegiatan-kegiatan yang dilakukan oleh komunitas maupun perusahaan untuk mengenalkan teknologi yang satu ini kepada khalayak umum, namun seringkali ketika materi pembelajaran mengenai Docker ini disampaikan hanya secara garis besarnya saja. Apakah kalian penasaran bagaimana sebenarnya cara Docker itu bekerja?

Sebenarnya apasih Docker itu?
Docker adalah sebuah platform opensource yang digunakan untuk proses development, pendistribusian, dan menjalankan sebuah aplikasi. Dengan Docker, kita bisa melakukan pemisahan antara aplikasi yang akan berjalan dengan infrastruktur tempat aplikasi tersebut berjalan sehingga kita mampu menyajikan aplikasi kita sehingga dapat digunakan dengan lebih cepat. Docker juga memberi kita kemampuan untuk dapat mempercepat proses development sebuah aplikasi hingga berjalan di fase production.
Docker memiliki kemampuan untuk membungkus dan menjalankan sebuah aplikasi didalam sebuah environment terisolasi yang disebut dengan container. Kalian dapat menjalankan banyak container secara bersamaan tanpa memberikan beban yang terlalu besar didalam sebuah host dikarenakan container tidak berjalan seperti halnya virtual machine yang menggunakan hypervisor, namun Docker berjalan menggunakan sistem berbagi kernel dengan mesin host.

Perbedaan dari container dan virtual machine?
Sebelum terlalu jauh membahas tentang teknologi dibalik Docker, mari sejenak melihat perbedaan yang amat besar antara container dan virtual machine.

Virtual Machine adalah sebuah sebuah environment virtual yang berjalan layaknya komputer virtual yang memiliki CPU, Memory, Network Interface, dan Storage sendiri yang dibuat dari sebuah komputer atau perangkat keras yang nyata. Virtual Machine atau VM ini menggunakan perangkat lunak hypervisor untuk melakukan pembagian antara resource yang digunakan oleh mesin fisik dan resource yang digunakan oleh mesin virtual. Sebuah mesin virtual memiliki environment yang terisolasi dan terpisah dari mesin host dan dengan mesin virtual yang lainnya. Dengan menggunakan VM kita bahkan bisa membuat sebuah mesin virtual atau biasa disebut dengan guest machine dengan menggunakan sistem operasi yang berbeda dari mesin host.

Container adalah sebuah abstraksi dari sebuah layer aplikasi beserta dengan ketergantungannya yang berada didalam sebuah environment yang terisolasi dari mesin host dan container yang lainnya. Container berjalan dengan membutuhkan resource yang lebih sedikit jika dibandingkan dengan VM, dikarenakan container berjalan tidak dengan menggunakan bantuan hypervisor, namun dengan cara berbagi kernel dengan mesin host tempat container tersebut berada. Bahkan container juga dapat berjalan didalam sebuah Virtual Machine.

image from : https://www.docker.com/resources/what-container
Dari gambar diatas, dapat diketahui bahwa perbedaan terbesar antara container dan virtual machine berada pada bagaimana cara pembagian resource yang digunakan antara mesin host dengan mesin guest atau container.

Ketika kita menggunakan container maka tidak diperlukan untuk melakukan pemasangan sistem operasi baru diatas sistem operasi yang sedang berjalan. Container menggunakan snapshot filesystem untuk dapat berjalan dan melakukan operasi standard sebuah sistem opearsi. Hal ini memungkinkan untuk memperkecil ukuran dari setiap container jika dibandingkan dengan virtual machine.

Sitem container yang digunakan oleh Docker adalah memanfaatkan teknologi dari linux yang bernama namespace. Teknologi namespace ini sudah ada sejak linux kernel versi 2.4 dirilis. Jadi sebenarnya teknologi yang digunakan oleh Docker ini bukanlah sebuah teknologi baru, namun dengan Docker kita akan dimudahkan untuk melakukan manajemen pada namespace ini berkat bantuan API dan CLI yang telah disediakan oleh Docker.

Jadi ketika Docker menjalankan sebuah container, maka akan dibuatkan juga sekumpulan namespace untuk container tersebut. Teknologi namespace ini yang memungkinkan untuk terjadinya isolasi untuk setiap container terhadap container yang lainnya maupun mesin host.


ALAMAT

Institut Teknologi Sepuluh Nopember, Kampus, Jl. Raya ITS, Keputih, Kec. Sukolilo, Kota SBY, Jawa Timur 60111, Indonesia