Skip to main content

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.

Comments

Popular posts from this blog

Pengertian Binding dalam Bahasa Pemrograman dan Kapan Terjadinya

Binding dimaksudkan sebagai pengikatan (association) antara suatu entity dengan atributnya, misalnya binding/pengikatan antara suatu variable dengan tipe datanya atau dengan nilainya, atau dapat juga antara suatu operasi dengan simbol, misalnya simbol + dikenali sebagai operasi penjumlahan atau simbol ^ dikenali sebagai operasi pangkat, dll.  Peristiwa binding dan kapan terjadinya binding (biasanya disebut dengan binding time ) berperan penting dalam membicarakan semantics suatu bahasa pemrograman. Beberapa kemungkinan binding time adalah:

Contoh proses normalisasi relasi dari UNF – 1NF – 2NF – dan 3NF

Dalam posting tulisan tentang: “Tujuan dan Manfaat Normalisasi dalam Perancangan Database” , kita sudah mempelajari tentang: “Apa itu normalisasi” dan “Mengapa kita perlu melakukan normalisasi”. Kedua pertanyaan itu sudah terjawab dalam tulisan tersebut.  Kemudian dalam posting tulisan tentang: “Konsep Ketergantungan Fungsional, Normalisasi, dan Identifikasi Primary Key dalam Perancangan Sistem Database” , kita sudah mempelajari suatu konsep penting yang digunakan untuk melakukan normalisasi, yaitu konsep ketergantungan fungsional yang terdiri dari ketergantungan penuh, ketergantungan parsial atau sebagian, dan ketergantungan transitif. Proses normalisasi pertama-tama dilakukan dengan mengidentifikasi adanya ketergantungan-ketergantungan tersebut dalam relasi-relasi dan kemudian menghilangkannya. Cara melakukan normalisasi, mengidentifikasi berbagai macam ketergantungan, dan menghilangkan ketergantungan pada relasi-relasi bisa dipelajari ulang dalam postingan tulisan d...

Latihan Soal Jawab Matematika Diskrit

Berikut di bawah ini adalah latihan soal jawab untuk matematika diskrit dengan topik-topik: Pernyataan Logika Circuits dan Ekspresi Boolean Argumen (valid/tidak valid) Teori Himpunan Permutasi Fungsi --o0o-- Pernyataan Logika 1. Buatlah tabel kebenaran untuk menentukan yang mana tautology dan yang mana contradiction dalam pernyataan logika (a) dan (b) di bawah ini: a. (p ∧ q) ∨ (∼p ∨ (p ∧ ∼q)) b.  (p ∧ ∼q) ∧ (∼p ∨ q)