Docker merupakan
project open source yang menyediakan platform terbuka untuk developer maupun
sysadmin atau siapapun untuk dapat membangun, mengemas, dan menjalankan
aplikasi dimanapun. Docker datang dengan menggunakan teknologi containernya,
berbeda dengan yang lainnya jika dalam melakukan virtualisasi. Dan sedikit
sejarah, kalau docker itu dibuat oleh Solomon HYkes dan Andrea Luzzardi serta
Francois-Xavier Bourlet sebagai project internal di dotCloud.
Mungkin kalian sedikit
bingung dengan pengertian diatas dikarenakan terlalu sulit untuk membayangkan
bagaimana pengembangan aplikasi yang sebenarnya. Docker berfungsi sebagai
virtualisasi sebuah sistem operasi atau sebuah server atau sebuah web server
atau bahkan sebuah database server, dimana dengan menggunakan virtualisasi ini,
diharapkan developer dapat mengembangkan aplikasi sesuai dengan spesifikasi
server atau dengan kata lain, jika kita mengembangkan sebuah aplikasi lalu kita
jalankan pada komputer kita sendiri maka secara otomatis aplikasi akan berjalan
dengan baik, nah bagaimana jika server yang akan menjalankan aplikasi kita
memiliki banyak perbedaan dengan komputer kita seperti perbedaan sistem
operasi, arsitektur processor dan sebagainya. Dengan menggunakan virtualisasi
ini maka para developer lebih mudah untuk mengatur mengenai deployment atau
menjalankan aplikasi di server production.
Sebelum kita membahas
mengenai docker lebih lanjut, kita akan mencoba membahas sedikit mengenai
docker dan vagrant. Docker dan vagrant merupakan tool yang sama atau dapat
dikatakan merupakan tool developer yang mempunyai fungsi yang sama, akan tetapi
meski memiliki fungsi yang sama terdapat beberapa perbedaan sehingga kita perlu
menentukan tool yang terbaik untuk melakukan development sebuah aplikasi.
Beberapa perbedaan dapat dilihat melalui tabel berikut.
Perbedaan yang sangat
mencolok anata docker dengan vagrant adalah docker menggunakan resource atau
memory yang lebih sedikit ketimbang vagrant, ini dapat dilihat dari penggunaaan
RAM, penggunaan images sistem operasi dan juga dapat dilihat perbedaannya, jika
menggunakan vagrant maka kita wajib melakukan instalasi virtual machine seperti
virtual box atau vmware, berbeda dengan docker menggunakan linux container
sehingga kita tidak perlu melakukan instalasi virtual machine.
Lalu kita lanjut ke cara kerja docker
secara singkatnya
Oke dimulai dari Virtual Machine.
Jika pada virtual
Machine itu untuk menjalankan Guest OS harus menggunakan hypervisor/Aplikasi
yang digunakan untuk membangun Guest OS nya. Pada virtual machine itu guest
dengan Host nya Terpisah. Untuk menginstall Guest OS nya Membutuhkan resource
yang sesuai dengan minimum requirements pada OS nya (Membutuhkan Resources
seperti install os biasa).
Dan selajutnya adalah
Docker, Jika sebelumnya pada virtual machine untuk membangun guest OS
membutuhkan Hypervisor, maka di docker menggunakan docker engine, dan docker
engine berjalan langsung pada Host OS tanpa ada perantara/penghubung seperti
Hypervisor.
Jadi bisa dibilang menggunakan docker
bisa meringankan beban Physic untuk menjalankan suatu Aplikasi, sebagai contoh
“Nginx”, Jika pada Virtual Machine untuk membangun Nginx diharuskan menginstal
Guest OS (sebagai contoh ubuntu), dan untuk menginstall Guest OS nya harus
menjalankan Keseluruhan OS nya, tidak seperti Docker hanya menjalankan Langsung
Aplikasi “Nginx” dan itu akan terbuat container, tanpa harus menginstall Guest
OS lagi, dan memang bisa meringankan beban resources.
Jika menjalankan
aplikasi pada docker akan menjadi Container, dan container tersebut bersifat
“Terisolasi”, maksudnya terisolasi adalah container yang berjalan tidak akan
menggangu container lainnya, sebagai contoh jika membuat Aplikasi Nginx, dan
Apache. Jika pada container apache mengalami masalah, maka Nginx tidak akan
terkena jika karena mereka berbeda container (Sebut saja berbeda wadah/tempat).
Untuk saat ini docker sudah mendukung di
semua platform (WIndows, Linux, Mac).
Untuk linux Docker sudah bisa dijalankan
di beberapa Distro.
Pada docker menggunakan teknologi
container, jika baru pertama kali mendengar container pada docker pasti
langsung berpikir container yang seperti ini:
Ya, itu benar-benar container, dan dari
situ pun sudah mengetahui fungsi dari container itu sendiri. Meletakan barang
pada suatu tempat untuk dikirim. Sama halnya pada Docker container develop
menjalankan container yang berisi aplikasi maupun OS.
Masih bingung?
Secara harfiah container merupakan alat
untuk mempermudah mengemas dan mendistribusikan suatu hal dari satu tempat ke
tempat lain. Sedangkan dalam konteks lingkungan linux (linux environment),
container dapat diartikan sebagai alat yang dapat dipergunakan untuk memberikan
sistem yang terisolasi (Isolated environment) pada level OS yang dijalankan
pada satu host.
Jika sudah mulai memasuki docker yang
lebih dalam (Belum terlalu dalam), pasti akan mendengar “Docker CE & Docker
EE”, dan akan bertanya-tanya Perbedaan antara docker CE dan docker EE apa. Lalu
adalagi pada melakukan instalasi docker biasanya pada ubuntu menggunakan
perintah “sudo apt-get install docker.io”, menjadi pertanyaan lagi apa itu
docker.io.
Dan dari ketiga perbedaan tersebut
disini saya akan mencoba untuk membahas secara singkat perbedaan antara
“CE,EE,IO”.
1. Docker
CE
Docker CE atau singkatan dari “Docker Community
Edition”, yang diperuntukan untuk komunitas dan cocok untuk developer dan team
yang baru memulai menggunakan docker, dan docker CE sudah mendukung banyak
Platform.
2. Docker
EE
Docker EE atau singkatan dari “Docker Enterprise
Edition”, mendengar kata-kata Enterprise bisa menangkap kalau enterprise itu
sudah berskala besar/untuk perusahaan. Dan untuk versi EE ini sudah banyak
kelebihan yang didapatkan ketimbang menggunakan CE, karena memang Pada EE ini
membutuhkan Biaya, dan pada docker EE memiliki Sertifikat pada Plugin dan
COntainernya. Serta Infrastructure nya.
3. Docker
IO
Untuk Docker IO sebenarnya saya juga awalnya belum
tau, apa itu IO dan kenapa pada saat instalasi docker menggunakan perintah
“IO”. Menggunakan itu karena Docker.io biasanya digunakan untuk di debian based
(ubuntu, mint, dsb), Diberi nama docker.io karena sebelumnya sudah ada package
yang bernama “Docker”, jadi docker.io itu hanya penamaan untuk package nya
untuk menghindari conflict package name.
Sebenarnya penjelasan diatas kurang
lengkap dan mungkin banyak kekurangannya, jadi untuk lebih lengkapnya bisa
mengunjungi langsung web Dockernya.
Pada arsitektur docker terdapat beberapa
bagian, yaitu:
1. Docker
Daemon
Docker daemon berfungsi untuk membangun, mendistribusikan
dan menjalankan container docker. User tidak dapat langsung menggunakan docker
daemon, akan tetapi untuk menggunakan docker daemon maka user menggunakan
docker client sebagai perantara atau cli.
2. Docker
Images
Docker images adalah sebuah template yang bersifat
read only. Template ini sebenarnya adalah sebuah OS atau OS yang telah
diinstall berbagai aplikasi. Docker images berfungsi untuk membuat docker
container, dengan hanya 1 docker images kita dapat membuat banyak docker
container.
3. Docker
Container
Docker container bisa dikatakan sebagai sebuah
folder, dimana docker container ini dibuat dengan menggunakan docker container.
Setiap docker container disimpan maka akan terbentuk layer baru tepat diatas
docker images atau base image diatasnya. Contohnya misalkan kita menggunakan
image ubuntu, kemudian kita membuat sebuah container dari image ubuntu tersebut
dengan nama ubuntuku, kemudian kita lakukan instalasi sebuah software misalnya
nginx maka secara otomatis container ubuntuku akan berada diatas layer image
atau base image ubuntu. Anda dapat membuat banyak docker container dari 1
docker images. Docker container ini nantinya dapat dibuild sehingga akan
menghasilkan sebuah docker images, dan docker images yang dihasilkan dari
docker container ini dapat kita gunakan kembali untuk membuat docker container
yang baru.
4. Docker
Registry
Docker registry adalah kumpulan docker image yang
bersifat private maupun public yang dapat anda akses di docker hub. Dengan
menggunakan docker registry, anda dapat menggunakan docker image yang telah
dibuat oleh developer yang lain, sehingga mempermudahkan kita dalam
pengembangan aplikasi.
Buat yang pakai windows, kita perlu yang
namanya docker toolbox. Kita install docker toolboxnya terlebih dahulu, semacam
ngeinstall composer buat laravel gitu kurang lebih sih. Di windows cuma tinggal
next next aja kok
Terus kalo buat linux, langsung dibuka
aja terminalnya hehe, harus connect ke inet ya tapi kalau mau install. Setelah
itu kita buka cmd, lalu ketikkan perintah:
docker -v
untuk mengetahui versi docker yang kita
gunakan
untuk mempermudah proses pertama
konfigurasi, gunakan Docker QuickStart
Lalu ini kita coba untuk merunningkan
hello world di docker.
Kita masukkan perintah tsb untuk memulai
atau menjalankan docker.
Setelah berhasil menjalankan dan
mengkonfigurasikan docker,
Unduh image yang dibutuhkan di docker
hub.
Teknisnya pada saat docker menerima
perintah u/ menjalankan sebuah command, maka docker image akan menyala selepas
itu akan mati lagi.
Untuk menjalankan sebuah container, kita memerlukan container id
#docker ps -l
Ketikkan perintah: #docker start
idcontaineranda , untuk memulai menjalankannya
semoga bermanfaat….
tambahan
dari segi "how thing works".
Docker pake teknologi container linux, spesifiknya
pake fitur namanya cgroup dan namespace untuk membuat container.
Bagaimana dengan mac os dan windows?
mereka bukan linux. Jadi ada workaround untuk itu. Maka diciptakanlah Docker
Machine
Docker Machine bekerja dengan membuat
sebuah VM baru berisi Linux, distro yang dipake adalah distro khusus untuk
docker. Docker Engine yang berjalan di Linux akan jalan di sini. Yes, gak ada
Docker Engine native untuk windows / mac, Docker Engine hanya ada di Linux jadi
yang pake windows / mac os harus install VM linux dulu: 9.
Di dalam VM ini lah semua container kita
akan berjalan. Untuk bisa konek ke sana, kita akan pake "docker
client" untuk konek ke server docker engine yang ada di docker machine
(VM) via jaringan.
Mau pake vagrant atau pake docker
machine mereka menggunakan VirtualBox.
solusi lebih baru (sekarang) adalah pake
docker windows ... dimana (katanya) hanya work untuk Windows 10 dan Server
2016. Dia memanfaatkan Hyper-V alias teknologi virtualisasi native yang ada di
Windows, gak pake virtualbox lagi. Tapi kekuarangannya si Hyper-V ini
memonopoli penggunaan fasilitas virtualisasi (lock) sehingga gak bisa digunakan
oleh VirtualBox, maka dari itu ada peringatan bahwa VirtualBox gak bisa dipake kalo
docker windows diaktifkan. Tapi ujung-ujungnya tetep bikin VM untuk jalankan
linux trus semua container ada di linux itu.
Tidak ada komentar:
Posting Komentar