Docker: baru belajar.. :)

Lama tidak update tulisan nih, untuk kali ini saya coba update tulisan tentang teknologi yang mungkin kedepan akan popular didunia enterprise.
Saat ini dalam dunia per-serveran atau operating system kita mengenal akan technology virtualisasi atau hypervisor. Di dunia technology virtualisasi, nama besar yang menguasai jagad technology virtualisasi adalah Vmware dengan vsphere ESXi-nya, Microsoft dengan Hyper-v nya, Cirtix dengan Xen Servernya. Selain dikuasai korporasi besar, ada juga versi open source seperti proxmox, KVM, dll.

Saat ini penggunaaan virtualisasi mungkin sudah umum, hampir setiap perusahaan besar sudah menggunakannya. Dari skala kecil, hingga yang sangat komplek. Nah, sekarang muncul lagi nih technology yang hampir mirip dengan virtualisasi. Technology ini berbasiskan prinsip container (CMIIW). Technology ini dikenal, dipopulerkan dan dipatenkan dengan nama “docker”,bukan the doctor yahh.. ☺.
Dari situsnya, Docker adalah sebuah project open-source yang menyediakan platform terbuka untuk developer maupun sysadmin untuk dapat membangun, mengemas, dan menjalankan aplikasi dimanapun sebagai sebuah wadah (container) yang ringan. Docker awal mulanya dikembangkan oleh Solomon Hykes sebagai project internal di dotCloud, sebuah perusahaan PaaS (platform as a service). Lebih lanjut tentang docker bisa anda baca di dokumentasinya disini https://docs.docker.com/docker/misc/
Lalu apa bedanya antara technology virtualisasi dengan technology container (docker), untuk lebih jelasnya, lihat gambar berikut:
docker.jpg
Kalau dilihat dari gambar diatas, seharusnya kita bisa langsung membedakan antara teknologi virtualisasi dengan teknologi berbasis container. Perbedaan paling mendasar adalah dahulu satu virtual machine umumnya digunakan sebagai dasar sebuah aplikasi, singkatnya satu VM (dengan OS tentunya)untuk satu aplikasi. Nah, sekarang dengan adanya docker satu Operating system (physical/virtual) bisa digunakan oleh banyak aplikasi tanpa saling mengganggu.
Lah bukannya saya juga bisa menggunakan banyak aplikasi dalam satu VM?bukannya itu sama saja?
Mungkin masih kurang jelas ya?oke saya coba jelaskan perbedaan yang paling mendasar dari docker dan VM.
  1. Docker bisa dijalankan diatas OS yang diinstall secara physical atau virtual. Sedangkan VM harus diinstall diatas hypervisor.
  2. Jika dianalogikan, anggap saja OS (baik berbentuk physical atau virtual) itu sebuah kapal besar. Aplikasinya itu barang-barang yang akan dimuat diatas kapal. Dimetode konvensional, ini seperti barang yang akan diangkut ditaruh semua dalam kapal dengan asal masuk, sedangkan dengan docker barang akan dikemas sesuai jenisnya dalam sebuah container. Dengan analogi tersebut harusnya sudah terbayang perbedaan mendasar antara Vm dan docker
  3. Di docker, aplikasi berjalan diatas sebuah container, tidak bergantung pada jenis OS dan Host. Hal ini berbeda dengan VM yang tergantung pada jenis hypervisornya, jika OS berjalan diatas produk vmware, mau ga mau harus dijalankan di produk vmware. Di docker, apapun OSnya, sepanjang terinstall docker masih tetap jalan.
Lalu apa keuntungan menggunakan docker ?
  • Docker sangat ringan jika dibandingkan dengan vm berbasis hypervisor.
  • Layer virtualisasi yang ditawarkan docker hampir tidak menambah overhead seperti halnya virtualisasi berbasis hypervisor. Besarnya overhead hanya sebesar layanan aplkasi yang dijalankan pada container itu sendiri (app process)
  • Kita bisa menjalankan container dalam mesin host (baik di VM atau di physical).
Lalu bagaimana docker bekerja? Arsitektur docker menggunakan client dan server. Docker client mengirimkan request ke docker daemon untuk untuk membangun, mendistribusikan, dan menjalankan container docker. Keduanya docker client dan daemon dapat berjalan pada sistem yang sama. Antara docker client dan docker daemon berkomunikasi via socket menggunakan RESTful API.
Dalam dunia docker, ada dua hal yang perlu diperhatikan, yaitu container dan sandbox. Container merupakan sebuah image yang bersifat read-write yang berjalan diatas image. Docker menggunakan union-file system sebagai back-end file system containernya, dimana setiap perubahan yang disimpan pada container akan menyebabkan terbentuknya layer baru diatas base image. Singkatnya, container merupakan layer kita melakukan instalasi aplikasi disalamnya. Sandbox  adalah mekanisme pemisahan aplikasi atau program tanpa mengganggu hostnya. Keberadaan sandbox sangat penting bagi developer maupun sysadmin. Bagi developer akan membuat rasa aman karena aplikasinya dapat berjalan tanpa ada gangguan jika ada perubahan dihostnya. Bagi sysadmin, jika akan melakukan update app yang berjalan diatas tidak akan tergaanggu.
Mungkin ini dulu ya, selanjutnya nanti akan dijelaskan bagaimana instalasi Docker. Saat ini docker hanya bisa dijalankan di OS berbasiskan Linux. Namun kabarnya, Windows server 2016 juga akan mendukung technology docker.
Sepertinya, technology berbasis container semakin dikenal, kabarnya juga Nutanix, sedang mengembangkan technology hypervisor berbasis technology container ini. Kita tunggu saja kabar selanjutnya.
Jika masih ada yang salah, saya dengan senang hati untuk menerima koreksi dari pembaca.
Salam.

Comments