Docker: Tinjauan Sekilas

Apa itu Docker

Docker adalah sebuah mesin open source yang mengautomatisasi proses deploy sebuah aplikasi menjadi sebuah container. Container adalah suatu unit standar dari suatu software yang membungkus dan mengisolasi source code dan semua dependency nya dari environment nya sehingga aplikasi dapat berjalan dengan cepat dan handal tidak perduli pada environment apa ia berjalan. Docker sendiri pertama kali ditemukan oleh Solomon Hykes dan Sebastien Pahl pada suatu startup incubator group yang bernama Y Combinator pada tahun 2011. Docker pertama kali dirilis pada acara Python Conference (PyCon) yang diadakan pada Maret 2013. Pada saat itu, Docker menggunakan LXC sebagai default execution environment nya. LXC sendiri adalah metode virtualisasi tingkat OS yang menjalankan beberapa sistem Linux yang terisolasi menggunakan satu kernel Linux. Akan tetapi setahun kemudian, dengan rilisnya versi 0.9, Docker mengganti LXC dengan komponennya sendiri yang ditulis dengan bahasa pemrograman Go.

Arsitektur Docker

Docker menggunakan arsitektur client – server, dimana terdapat beberapa komponen utama yaitu :
  1. Server yang merupakan long – running program yang bernama daemon dan bertugas dalam mengerjakan tugas – tugas berat seperti membangun, menjalankan dan mendistribusikan Docker container
  2. Client yang berbentuk command line interface (CLI) sebagai antarmuka yang dilihat oleh pengguna
  3. REST API yang menentukan interface yang akan digunakan client dalam memberitahu server apa yang harus dilakukan
Cara kerja Docker

Dapat dilihat pada gambar di atas, terdapat beberapa skenario cara kerja dari aplikasi Docker yang bergantung pada perintah yang dimasukkan oleh pengguna. Beberapa skenario tersebut adalah sebagai berikut :

1. Docker build

Apabila pengguna memasukkan perintah “docker build”, client atau Docker CLI akan mengirimkan perintah kepada server, yaitu Docker Daemon, untuk membangun sebuah Docker image berdasarkan code yang telah dibuat oleh pengguna. Docker image sendiri adalah sebuah paket software yang bersifat lightweight, standalone dan executable yang berisi semua hal yang diperlukan oleh suatu aplikasi untuk berjalan, seperti : source code, system tool, libraries dan setting.

2. Docker pull

Apabila pengguna memasukkan perintah “docker pull”, client akan mengirimkan perintah kepada server untuk menarik atau men – download Docker image yang terletak pada Docker registry dan menyimpannya pada penyimpanan lokal. Docker registry sendiri adalah tempat untuk menyimpan Docker image. Secara default, Docker registry akan mencari Docker image yang diinginkan oleh pengguna pada Docker Hub. Docker Hub sendiri adalah public registry yang dapat digunakan oleh siapa saja.

3. Docker run

Apabila pengguna memasukkan perintah “docker run”, client akan mengirimkan perintah kepada server untuk mengubah Docker image menjadi Docker container dan menjalankan container tersebut. Apabila server tidak menemukan image yang diinginkan, server akan melakukan pull terhadap Docker image yang diinginkan pada Docker registry.

Container vs VM

Perbedaan antara container vs virtual machine

Container dan virtual machine memiliki beberapa kesamaan, yaitu sama – sama membungkus sebuah resource. Akan tetapi, container berbeda dengan virtual machine. Dapat dilihat pada gambar di atas, container adalah abstraksi yang berjalan pada app layer yang hanya membungkus suatu aplikasi dan dependency nya dan tidak menyertakan operating system di dalamnya sehingga ukuran container relatif lebih kecil jika dibandingkan dengan virtual machine. Sedangkan virtual machine adalah abstraksi pada pada perangkat fisik yang memungkinkan beberapa server berjalan secara virtual pada satu server fisik. Selain itu virtual machine menyertakan salinan lengkap dari suatu OS sehingga ukuran suatu virtual machine relatif besar.

No comments:

Post a Comment