Abdul Majid Rija/50411020/4IA24
Link Slide Share : http://www.slideshare.net/rija21/docker-46698736
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 Lisensi Apache Versi 2.0 yang bisa dipergunakan
secara gratis. Saat ini Docker hanya bisa berjalan pada Linux, namun kita bisa
menggunakan mesin virtual pada mesin windows, atau menggunakan Boo2docker.
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
Banyaknya terminologi yang merupakan
komponen Docker sering kali membingungkan. saya akan berusaha menjelaskannya
berikut ini:
Istilah yang menjadi komponen utama
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
Fahmi persada.fahmi@gmail.com
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.
·
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.
Demanding help in QuickBooks Payroll while encountering day-to-day technical hassles? Enjoy extensive aid from our knowledgeable & certified QB Payroll experts by dialing our QuickBooks Customer Support Phone Number 1-833-325-0220 24*7 and 365 days of unrivalled support. For More: https://g.page/quickbooks-support-pennsylvania?gm
ReplyDeleteQuickBooks Consultant Near Me