http://www.slideshare.net/rija21/docker-46698736
DOCKER(Developer Tool Berbasis
Container)
Docker
adalah sebuah platform terbuka untuk developer, sysadmin atau
siapapun yang bertujuan menggunakan sebuah platform untuk membangun,
mendistribusikan dan menjalankan aplikasi dimanapun; laptop, data center,
virtual mesin ataupun cloud. Docker membuat proses pemaketan aplikasi bersama
komponennya (dependencies ) secara cepat dalam sebuah container yang
terisolasi, sehingga dapat dijalankan dalam infrastruktur local (local data
center) ataupun cloud tanpa melakukan perubahan/konfigurasi lagi pada
container, selama host menjalankan Docker Engine.
Docker merupakan software open source di bawah yang bisa dipergunakan secara gratis.
Docker merupakan software open source di bawah yang bisa dipergunakan secara gratis.
Arsitektur Docker
Docker menggunakan arsitektur client-server.
Docker client mengirimkan request berupa perintah kepada Docker daemon
untuk membangun, mendistribusikan dan menjalankan container Docker.
- Docker Daemon: Seperti terlihat pada gambar, Docker daemon berjalan pada mesin host. Pengguna tidak berinteraksi secara langsung dengan Docker daemon tapi melalui Docker client.
- Docker Client: Docker client merupakan bentuk dari Docker binary dan merupakan user interface utama untuk Docker, yang menerima perintah dari pengguna dan berkomunikasi dengan Docker daemon.
Beberapa Terminologi dalam
penggunaan Docker
- Docker images: Image Docker merupakan sebuah template yang bersifat read-only. Contohnya sebuah image yang berisi sistem operasi Ubuntu dengan Apache dan aplikasi web yang telah kita instalkan. Image ini digunakan untuk menjalankan container. Docker menyediakan cara yang sederhana untuk membangun image baru atau merubah image yang sudah ada. Jika melihat Docker Index kita akan menemukan banyak image yang sudah banyak dibuat oleh pengguna lain yang bisa kita gunakan sebagai base image. Misalnya kita akan membangun sebuah aplikasi PHP dengan apache web server dan mysql, maka kita hanya perlu mendownload base image berupa LAMP server lalu kita tinggal menambahkan aplikasi PHP yang sudah kita buat.
- Docker Container:
Container merupakan sebuah image bersifat read-write yang berjalan
di atas image. Docker menggunakan union-file sistem
sebagai back-end file sistem containernya, dimana setiap perubahan
yang disimpan pada container akan menyebabkan terbentuknya layer baru di
atas base image. Jadi container merupakan layer dimana kita bisa melakukan
instalasi aplikasi di dalamnya. Masing-masing container yang berjalan
terisolasi dan platform aplikasi yang aman.
- Docker Registry: Docker registry adalah tempat penyimpanan (public atau private) dimana kita bisa mengupload dan mendownload image. Registry public Docker disebut dengan Docker Hub. Di dalamnya terdapat banyak image, bisa merupakan image yang kita buat sendiri ataupun image yang lain.
Istilah lain-lain:
- Dockerfile: merupakan sebuah skrip otomasi (builder) yang membangun sebuah image. Sebuah Dockerfile merupakan dokumen text atau skrip yang berisi semua perintah yang biasanya kita lakukan manual untuk membangun sebuah image. Dengan menggunakan perintah docker build dari terminal, kita akan melihat Docker membangun image step by step mengeksekusi perintah berurutan. Kita ambil contoh sebuah skrip Dockerfile:
FROM
ubuntu:latest
MAINTAINER
RUN
apt-get update && apt-get -y install apache2 && apt-get clean
EXPOSE
80
CMD
["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
skrip Dockerfile di atas digunakan untuk membuat sebuah image yang terinstall apache daemon di dalamnya. Untuk cara penggunaannya saya akan menulisnya pada artikel terpisah.
skrip Dockerfile di atas digunakan untuk membuat sebuah image yang terinstall apache daemon di dalamnya. Untuk cara penggunaannya saya akan menulisnya pada artikel terpisah.
- Repository: Docker menggunakan kata ini mirip dengan yang digunakan pada Github dan source control system lainnya, namun jenis yang berbeda. Repository berupa ID untuk setiap image yang disimpan dalam registry. Ketika kita menjalankan perintah docker commit maka image itu akan kita beri nama dengan format username/nama_image. Ketika kita mengupload image tersebut dengan perintah docker push, index akan melihat nama image dan memastikan tidak ada nama repository yang sama, jika tidak maka index akan memeriksa apakah kita memliki akses terhadap repository tersebut, maka selanjutnya kita diijinkan untuk mengupload image versi baru ke repository tersebut.
- Docker Index: Docker index dengan Docker hub registry merupakan hal yang terpisah. Index mengatur user account, permission, search, tagging dan hal lain yang tersimpan pada web interface public. Ketika kita menjalankan perintah docker run, hal itu digunakan untuk mencari pada index bukan registry. Atau ketika kita menjalankan perintah docker pull ataupun docker push, index akan menentukan apakah kita diijinkan untuk mengakses atau memodifikasi image, dan selanjutnya registry adalah bagian yang akan menyimpan image tersebut setelah kita mendapatkan permisi dari index.
Perbandingan
dengan virtual mesin
Docker sangat ringan dan cepat jika
dibandingkan dengan virtual mesin yang berbasis hypervisor, sehingga menjadikan
Docker sebagai alternatif yang efisien untuk developer tooling. Sebagai light-weight
virtualization Docker hampir tidak menambah overhead pada mesin
host. Hal ini membuat docker mempunyai beberapa keuntungan:
- Layer virtualisasi yang ditawarkan Docker hampir tidak menambah overhead seperti virtualisasi berbasis hypervisor pada mesin virtual, besarnya overhead hanya sebesar layanan aplikasi yang dijalankan pada container itu sendiri (app process)
- Keuntungan kedua adalah kita bisa menjalankan banyak container dalam mesin host.
Hasil pengujian saya, dibandingkan
dengan VM VirtualBox, dalam menjalankan 5 mesin virtual ubuntu (berbasis text)
dengan memory 192 MB, Virtualbox menghabiskan memory lebih dari 1 GB, sedangkan
Docker dengan 10 container ubuntu hanya menghabiskan 27 MB.
Note: Pengujian pada mesin virtual
Ubuntu dilakukan dalam kondisi fresh install
Perkembangan
Docker dalam dunia produksi
Saat ini Docker dengan cepat menjadi
standar tool berbasis container, dan banyak diintegrasikan oleh project PaaS
seperti Dokku, Deis, Flynn atau Vagrant.
Beberapa server farm terbesar saat ini menggunakan container. Pengembangan web yang besar seperti Google dan Twitter dan platform provider seperti Heroku dan dotCloud berjalan dengan teknologi container, pada skala ratusan ribu atau bahkan jutaan container yang berjalan secara paralel.
Beberapa server farm terbesar saat ini menggunakan container. Pengembangan web yang besar seperti Google dan Twitter dan platform provider seperti Heroku dan dotCloud berjalan dengan teknologi container, pada skala ratusan ribu atau bahkan jutaan container yang berjalan secara paralel.
References:
http://http://fahmpress.blogspot.com/2014/10/docker-developer-tool-berbasis-container/
Tidak ada komentar:
Posting Komentar