Pengenalan Docker



Apa Itu Docker?

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. Awal mula perkembangan Docker ini didasari oleh kinerja Solomon Hykes sebagai Project internal di dotCloud, sebuah perusahaan PaaS (platform as a service) serta dibantu oleh para koleganya seperti Andrea Luzzardi dan Francois-Xavier Bourlet.

Pada bulan Mei 2013 dirilislah platform docker pertama kalinya open-source. Semenjak itu docker terus berkembang dan menjadi lebih baik dengan banyaknya kontributor yang tergabung dalam Project open-source ini.

Hampir mirip dengan Virtual Machine (VM) akan tetapi docker lebih ringan. Hal tersebut dikarenakan docker tidak membawa seluruh sistem operasi seperti halnya Virtual Machine tetapi docker hanya berbagi sistem (system shared) dengan host pembawanya.

Docker juga dilengkapi dengan fitur sandbox yang menjamin pengerjaan pengembang dan sysadmin tidak terganggu.

Sandbox adalah istilah keamanan komputer dengan mekanisme pemisahan aplikasi atau program tanpa mengganggu host (isolasi). Bagi pengembang, sandbox dapat menjamin aplikasinya dapat berjalan tanpa gangguan atas perubahan lingkungan host. Sedangkan bagi sysadmin, menjamin host server yang dikelola tidak terganggu dan dapat melakukan update tanpa takut mengganggu aplikasi.

Arsitektur dan Komponen Docker

Aristektur docker menggunakan mekanisme client dan server. Dimana docker client mengirimkan request ke docker daemon 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.

Docker sendiri memiliki banyak komponen dalam menjalankan proses dan tugasnya. Masing-masing komponen pada docker itu saling ketergantungan, sehingga jika ada komponen yang tidak tersedia hal itu tentu saja akan mempengaruhi kinerja docker. Berikut merupakan komponen yang terdapat pada docker :
  • Docker Images
    Docker Images adalah komponen docker yang berupa template dasar untuk sebuah docker container. Sebuah image biasanya berisi OS maupun aplikasi yang telah diinstall dan telah jadi. Image ini digunakan untuk menjalankan container, di docker indeks (https://registry.hub.docker.com/) terdapat banyak sekali image yang bisa kita pilih dan kita gunakan sebagai base image.
  • Docker Container
    Docker container merupakan sebuah image yang dapat dikemas dan bersifat Read-Write, container berjalan diatas image. Pada setiap perubahan yang disimpan pada container akan menyebabkan terbentuknya layer baru diatas base image. Kita dapat melakukan instalasi aplikasi didalamnya dan melakukan penyimpanan.
  • Docker Registry
    Docker Registry merupakan repository distribusi kumpulan docker image yang berpusat baik bersifat public dan private repositori. Rregitry public Docker disebut dengan Docker Hub. Disini kita bisa melakukan push image kita sendiri maupun pull image.
  • Docker File
    Docker File merupakan skrip otomatis yang berisi atau terdiri dari serangkaian perintah (instruksi) yang akan dieksekusi secara otomatis dan berurutan untuk membangun sebuah image.
  • Repository
    Docker juga memiliki repository yang mirip digunakan oleh GitHub dan source control system lainnya, namun dengan jenis yang berbeda. Pada saat kita mengeksekusi perintah docker commit maka image tersebut dapat kita beri nama dengan format username/name_image. Proses upload file ini juga disesuaikan dengan database repository, jika nantinya ada nama yang sama dalam repository maka kita akan diminta untuk mengganti nama akan tetapi jika nama yang kita berikan belum pernah ada, maka kita bisa melanjutkan proses upload image tersebut.
  • Docker Index
    Docker Indeks dan docker Hub registry memiliki fungsi yang berlainan. Indeks berfungsi mengatur user account, permission, search dan hal lain yang ada pada web interface public.

Perkembangan Docker

Saat ini Docker dengan cepat menjadi standart tool berbasis container, dan banyak diintegrasikan oleh Project Pass seperti Dokku, Deis, Flynn atau Vegrant. Kelebihan Docker sendiri ada pada container, sudah banyak pula perusahaan besar IT didunia, kontributor opensource serta komunitas telah membuktikan bahwa container dapat menjalankan aplikasi lebih cepat dan lebih efisien dibanding dengan virtual machine. Container juga dapat berjalan dengan baik di aplikasi/service yang bergantung pada server, sehingga sengat cocok bila diterapkan pada Cloud computing.

Hingga saat ini docker sendiri telah dapat dijalankan diberbagai system operasi dari Ubuntu, CentOS, Red Hat, Opensuse dan keluarga linux lainnya. Bahkan tidak cuma keluarga linux, Windows dan MacOS pun kini dapat menjalankan docker.

Perbedaan Antara Virtual Machine dengan Container Docker

Ada beberapa perbedaan mendasar jika kita bandingkan antara Virtual Machine dan Container Docker. Bagi para pembaca yang telah memahami konsep dan teknologi virtual machine seperti Vmware vSphere, OpenVZ, Proxmox, KVM, qemu, dan lain sebagainya mungkin sudah memahami konsep virtualisasi berbasis VM.

Dalam bidang virtualisasi, terdapat istilah Virtual Machine (VM) dan Container. Secara prinsip keduanya sama yaitu sama-sama teknologi virtualisasi, akan tetapi ada perbedaan mendasar diantara VM dan Container, yaitu sebagai berikut :
  1. Virtual Machine menggunakan keseluruhan resource Hardware yang disediakan oleh host, sehingga jika kita asumsikan maka sistem operaso telah menjalankan 2 sistem operasi. Sedangkan dalam docker, docker hanya menjalankan aplikasi tertentu saja, hal ini membuat pengguna resource Hardware lebih sedikit. Penjalasannya seperti gambar dibawah ini.


  2. Virtual Machine menggunakan kernel tersendiri bagi tiap operating systemnya. Hal ini tentu saja akan memberatkan operating system pembawanya. Beda halnya dengan container dimana kernel yang digunakan adalah bagian (shared) dari operating system induknya.
  3. Flexibilitas resource Hardware sangat berbeda pada keduanya. Jika pada VM, resource Hardware yang telah didefinisikan untuk contoh VM A, maka VM B tidak dapat memakai resource Hardware VM A. Beda halnya pada container, jika ada sebuah container yang idle maka container yang aktif dapat memanfaatkan resource Hardware milik container yang sedang idle tersebut.

Keuntungan Menggunakan Docker

  1. Kemudahan dalam Konfigurasi
    Dengan adanya docker, kita dapat menjalankan sistem virtualisasi dengan sangat mudah tanpa melakukan banyak konfigurasi. Hanya cukup menggunakan satu baris perintah maka mesin container pun sudah dapat berjalan dengan lancar.
  2. Isolasi
    Sistem aplikasi docker yang terisolasi membuat container menjadi aman. Proses kerja container docker yang tidak akan menggangu container yang lain juga merupakan keuntungan yang daat dimanfaatkan terutama oleh para developer.
  3. Standarisasi Lingkungan dan Kontrol Versi
    Adanya kemudahan dalam melakukan pengembangan dan rilis dari sistem aplikasi. Docker yang menggunakan sistem repository seperti GIT tentu memundahkan dalam hal kontrol versi dan pengembangan.
  4. Multi Cloud Platform
    Salah satu manfaat terbesar Docker adalah portabilitas. Selama beberapa tahun terakhir, semua penyedia komputasi awan terbesar, termasuk Amazon Web Service (AWS) dan Google Compute Platform (GCP), telah merangkul Docker dan menambahkan dukungan individu.

    Container Docker dapat dijalankan dalam Amazon EC2 Instance dan Google Compute Engine, Server Rackspace atau VirtualBox, asalkan host OS mendukung Docker. Jika hal ini memberikan tingkat abstraksi dari lapisan infrastruktur.

    Selain AWS dan GCP, Docker bekerja sangan baik dengan berbagai penyedia laaS lain seperti Microsoft Azure, dan OpenStack, dan dapat digunakan dengan berbagai manajemen konfigurasi seperti Chef, Puppet, dan Ansible.
  5. Keamanan
    Docker menggunakan OS host mount point sensitif (misalnya, '/ proc' dan '/ sys') sebagai read-only mount point dan menggunakan filesystem copy-on-write untuk memastikan container tidak bisa membaca data satu sama lain.

    Pendekatan ini juga membatasi sistem panggilan untuk OS host Anda dan bekerja dengan baik dengan SELinux serta AppArmor. Selain itu, Docker image yang tersedia pada Docker Hub memiliki tanda-tangan digital untuk memastikan keaslian. Karena container Docker terisolasi dan sumber daya yang dapat dibatasi, bahkan jika salah satu aplikasi Anda terkena hack, hal tersebut tidak akan mempengaruhi aplikasi yang berjalan pada container Docker lainnya.
Comment Policy : Silahkan tuliskan komentar Anda yang sesuai dengan topik postingan halaman ini. Komentar yang berisi tautan tidak akan ditampilkan sebelum disetujui.

Beri Komentar Tutup comment

Disqus Comments