ke3

Minggu, 30 Desember 2018

Materi Dasar Tentang Docker untuk Pemula



 Apa sih docker itu?
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

Metode Perancangan Basis Data

 Metode perancangan basis data secara umum dikelompokkan kedalam: 1. Preliminary Design 2. Scratching Methode 1. Preliminary Design, Cirinya...