Tutorial Docker bagian 1 || Introduction: Mengenal Konsep Dasar, Manfaat, dan Kelebihan Docker



Introduction

Pada saat sekarang ini, aplikasi-aplikasi yang dibangun berbasis website tuh jadi kaya primadona bagi para pengembang software. Nah, hal ini gara-gara perkembangan teknologi komputer dan internet yang semakin canggih, dan harganya juga semakin terjangkau, jadi semakin banyak yang bisa ngerasain nikmatnya bikin aplikasi web.


Tapi nggak bisa dipungkiri juga, dalam pembuatan aplikasi itu, kita butuh banyak tools dan program pendukung, kan? Untungnya, sekarang ini banyak banget pilihan tools yang udah tersedia untuk bantuin kita dalam bikin aplikasi. Jadi, para pengembang bisa dengan mudah mengembangkan aplikasi dengan pilihan tools yang bervariasi.


Tapi nih, biasanya dalam bikin program, para pengembang tuh suka pake yang namanya virtualisasi pada server. Nah, jadi virtualisasi ini tuh kayak ngerubah server kita jadi banyak komputer virtual gitu, biar program yang kita bikin bisa jalan di berbagai platform dan konfigurasi hardware.


Masalahnya, ketika kita virtualisasi ini, kita harus siapin satu sistem operasi secara utuh, beserta semua aplikasi yang diperlukan. Bayangin aja, kalo ada banyak virtualisasi yang jalan di satu server, pasti bakal bikin beban server jadi berat banget.


Ada dua cara umum untuk nge-"deploy" aplikasi web ke dalam server. Yang pertama, kita bisa langsung pasang aplikasi web beserta environment-nya ke satu server tunggal. Cara ini enaknya setup server-nya gampang, simpel, dan cepet proses penyebarannya. Tapi sayangnya, setiap aplikasi nggak terisolasi, jadi kalo kita mau deploy beberapa aplikasi yang masing-masing punya kebergantungan dengan versi paket tertentu, bisa-bisa ntar jadi bermasalah deh.


Nah, yang kedua, kita bisa manfaatin teknologi virtualisasi yang pake hypervisor. Jadi, tiap aplikasi dan paket yang diperlukan bisa kita taro di Virtual Machine (VM) yang beda-beda. Dengan cara ini, kita bisa meningkatin skabilitas, karena setiap aplikasi jalan di resource yang beda-beda, jadi bisa dengan mudah ditambahin sesuai kebutuhan. Tapi masalahnya, ya, kalo kita pake virtualisasi kayak gini, pasti butuh resource yang besar.


Jadi, gitu deh, cerita singkatnya tentang betapa serunya dan beratnya dalam membangun aplikasi web pake teknologi virtualisasi di zaman sekarang

Selamat datang di seri "Belajar Docker "! Seri ini akan membawa Anda memahami dunia Docker , serta mempelajari konsep-konsep kunci yang dapat memberikan pemahaman yang mungkin berbeda dari yang pernah anda ketahui atau sekedar mengingatkan kembali ingatan kita tentang Docker itu sendiri.

Pernahkah kamu membayangkan sebuah dunia di mana aplikasi bisa berpindah dengan mudah,Di sinilah Docker hadir sebagai alternatif, membantu para pengembang dan operator mengelola aplikasi dengan cara yang lebih ringan , gesit dan Fleksibilitas yang tinggi dengan penghematan Resorce.

Salah satu keuntungan besar pake Docker itu portabilitasnya. Dalam beberapa tahun terakhir, para penyedia layanan komputasi awan kayak Microsoft Azure, Amazon Web Services (AWS), sama Google Compute Platform (GCP) udah pada dukung Docker. Nah, banyak banget aplikasi berbasis microservices yang pake Docker Container, contohnya kayak yang ada di tabel ini:


Jenis              Nama Aplikasi

E-Commerce      Ebay

E-Commerce     Gilt

E-Commerce     Groupon

Media             Spotify

Life Sciences         Illumina

Life Sciences     Cambridge Healtcare

PaaS             Redhat

PaaS             Yandex

IT SaaS             New Relic

IT SaaS             AppDynamic

Nah, peran Docker ini penting banget dalam proses transformasi digital, lho. Para CIO (Chief Information Officer) pada ngelirik Docker karena dengan Docker ini, aplikasi bisa jalan di dalam sebuah Container, dan ini bikin aplikasi jadi bisa diangkut-angkut antara sistem operasi yang berbeda-beda, gampang kan?


Ada dua alasan kenapa aplikasi banyak yang dibangun pake Docker. Pertama, pake Docker itu kayak ngasih bodyguard buat aplikasi kita dari lingkungan operasi sekitarnya. Jadi, aplikasi kita aman dari gangguan langsung sama aplikasi lain atau sama sistem operasi. Artinya, proses uji coba jadi lebih gampang. Kita cuma perlu uji coba sekali aja, nggak perlu berkali-kali gara-gara beda versi sistem operasi atau kombinasi aplikasi yang beda-beda.


Kedua, dari sudut pandang Sysadmin, Docker itu juga asyik. Mungkin aja, Sysadmin udah punya kumpulan gambar mesin virtual yang mencakup berbagai lingkungan operasi yang berbeda buat aplikasi. Nah, kalo aplikasinya jalan di Docker Container, Sysadmin bisa pake container yang sama buat semua konfigurasi sistem yang beda-beda, jadi nggak perlu lagi siapin server baru untuk tiap-tiap instance. Hemat waktu, hemat tenaga, gitu. Seru, kan?


Memahami virtualisasi dan kontainerisasi



Virtualisasi itu seperti bikin kloningan komputer dalam komputer. Jadi misalnya, kamu punya satu komputer besar, trus kamu bikin beberapa komputer virtual di dalamnya. Setiap komputer virtual ini tuh kayak punya komputer sendiri dengan sistem operasi yang berbeda-beda. Jadi bayangin aja, ada satu komputer besar (itu hostnya), trus di atasnya ada sistem operasi utama (host operating system), terus ada juga hypervisor yang mengatur komputer-komputer virtual ini. Tiap komputer virtual punya sistem operasi sendiri, jadi ini yang bikin ukuran komputer virtual jadi gede-gede banget.

Nah, beda lagi kalau kita ngomongin kontainer, khususnya yang pake Docker. Kontainer itu kayak kotak yang bisa diisi sama aplikasi dan semua yang dibutuhin aplikasi itu. Jadi, di satu sisi ada komputer kita (yang hostnya), terus ada Docker engine yang berfungsi kayak penghubung antara sistem operasi host dan kontainer-kontainer kita. Nah, yang menarik, kontainer ini nggak perlu sistem operasi sendiri, lho! Jadi ukurannya jauh lebih kecil dibandingkan komputer virtual. Nah, bedanya ini yang bikin Docker jadi keren, karena kontainernya bisa berjalan di atas sistem operasi host yang sama tanpa perlu sistem operasi tambahan. Jadi, misalnya host operating system-nya Ubuntu, kontainer-kontainernya bisa pakai sistem operasi lain seperti CentOS, Red Hat, dan sebagainya.

Jadi, intinya, perbedaan mendasar antara virtualisasi dan kontainerisasi adalah di ukuran dan kompleksitasnya. Virtual machine (komputer virtual) itu ukurannya besar karena tiap-tiap VM punya sistem operasi sendiri, sementara kontainer itu lebih kecil dan ringan karena nggak perlu sistem operasi terpisah. Makanya, Docker ini jadi pilihan yang oke buat nge-run aplikasi-aplikasi kita dengan lebih efisien dan hemat sumber daya. Seru, kan?

Produk Virtualisasi Berbasis Hypervisor dan Container

Produk Virtualisasi Berbasis Hypervisor:

Berikut adalah beberapa contoh produk virtualisasi yang menggunakan hypervisor:

  1. Oracle VirtualBox: Solusi virtualisasi gratis dan open-source yang populer untuk berbagai platform.
  2. VMware: Penyedia ternama dalam solusi virtualisasi dengan berbagai produk seperti VMware Workstation, VMware ESXi, dan VMware Fusion.
  3. KVM (Kernel-based Virtual Machine): Solusi virtualisasi open-source yang terintegrasi dengan kernel Linux.
  4. Microsoft Hyper-V: Hypervisor bawaan pada sistem operasi Windows Server yang memungkinkan virtualisasi server.


Virtualisasi Berbasis Container:


Virtualisasi berbasis container, seperti yang digambarkan dalam Gambar , memiliki strategi berbeda. Dalam hal ini, semua "guest" (sistem operasi virtual) berbagi sebagian besar hardware. Host hanya mengatur pemisahan folder dan izin akses antar guest sehingga mereka tidak bisa saling melihat.

Produk Virtualisasi Berbasis Container:

Berikut adalah beberapa contoh produk virtualisasi yang menggunakan container:

  1. OpenVZ: Solusi virtualisasi open-source yang memungkinkan banyak sistem operasi virtual berjalan pada satu server fisik.
  2. LXC (Linux Containers): Teknologi virtualisasi yang memungkinkan menjalankan beberapa container Linux terisolasi pada satu host.
  3. Docker: Platform container populer yang memungkinkan pengembang dan operator untuk membangun, menjalankan, dan mengelola aplikasi dalam container.

Mengapa Kita Menggunakan Container?

Container menawarkan mekanisme pengemasan logis di mana aplikasi dapat dipisahkan dari lingkungan di mana mereka sebenarnya berjalan. Pemisahan ini memungkinkan aplikasi berbasis container untuk didistribusikan dengan mudah dan konsisten, tidak peduli apakah lingkungan tujuan adalah pusat data pribadi, awan publik, atau bahkan laptop pribadi seorang pengembang. Hal ini memberikan kemampuan kepada pengembang untuk membuat lingkungan yang dapat diprediksi dan terisolasi dari aplikasi lain, serta dapat dijalankan di mana saja.

Dari sudut pandang operasional, selain portabilitas, container juga memberikan kontrol yang lebih detail terhadap sumber daya, meningkatkan efisiensi infrastruktur Anda yang dapat menghasilkan pemanfaatan sumber daya komputasi yang lebih baik.


Karena manfaat-manfaat ini, container (dan Docker) telah melihat adopsi yang luas. Perusahaan-perusahaan seperti Google, Facebook, Netflix, dan Salesforce memanfaatkan container untuk membuat tim-tim teknik yang besar lebih produktif dan untuk meningkatkan pemanfaatan sumber daya komputasi. Bahkan, Google mengakui bahwa container telah menghilangkan kebutuhan akan satu pusat data secara keseluruhan.


Apa itu Docker?

Bayangkan sebuah peti ajaib yang mampu menampung semua kebutuhan sebuah aplikasi, mulai dari kode, data, hingga pengaturan. Peti ajaib ini, yang disebut Docker Container, memungkinkan aplikasi untuk berjalan dengan mulus di berbagai platform, layaknya burung yang mampu terbang di langit manapun.


Analogi Kapal Kontainer:

Bayangkan sebuah kapal kontainer yang mengarungi lautan. Kapal ini seperti Docker, mengangkut berbagai container yang membawa muatan beragam. Container ini adalah aplikasi yang terbungkus rapi, membawa semua yang dibutuhkan untuk menjalankan aplikasi. Kapal kontainer menyediakan infrastruktur dan jaringan untuk menjalankan container, seperti Docker yang menyediakan platform untuk mengelola dan menjalankan container.

1. Apa itu Docker Container ?

Docker Container dapat diibaratkan seperti peti kemas yang kokoh. Di dalamnya, Anda akan menemukan semua bahan yang Anda butuhkan untuk membangun suatu aplikasi, seperti kayu, batu bata, peralatan, dan panduan lengkap. Begitu juga dengan Docker Container, yang merupakan solusi canggih untuk mengemas dan menjalankan aplikasi beserta dependensinya dalam lingkungan terisolasi yang disebut container. Container ini berisi semua elemen penting untuk menjalankan aplikasi, seperti kode, runtime, library, dan konfigurasi, mirip dengan semua bahan dan panduan yang Anda perlukan untuk membangun rumah.


2. Keuntungan Mengembangkan Aplikasi dengan Docker:


Tanpa Docker:

- Developer harus mengatur dan menginstal dependensi serta pengaturan di komputer masing-masing, menghasilkan kerumitan dan potensi inkonsistensi.

- Memerlukan waktu dan usaha ekstra untuk menyesuaikan aplikasi dengan berbagai lingkungan pengembangan.


Dengan Docker:

- Developer dapat mengemas aplikasi dan dependensinya dalam container, menyederhanakan proses pengembangan dan memastikan konsistensi.

- Setiap developer menggunakan container yang sama, meminimalkan masalah dan meningkatkan efisiensi.

- Mempermudah kolaborasi tim dan standarisasi proses pengembangan.


3. Deploy Aplikasi dengan Mudah dan Konsisten:


Tanpa Docker:

- Tim operasi harus mengonfigurasi server dan menginstal dependensi secara manual, proses yang rentan kesalahan dan memakan waktu.

- Risiko inkonsistensi dan error saat deploy aplikasi di lingkungan berbeda.


Dengan Docker:

- Deploy aplikasi menjadi mudah dan konsisten di mana saja.

- Tim operasi hanya perlu menginstal Docker di server dan menjalankan container aplikasi dengan perintah sederhana.

- Meningkatkan kecepatan dan keandalan deployment.

- Meminimalkan risiko error dan inkonsistensi, memastikan kelancaran dan keefektifan deployment.


Beberapa Istilah penting di dalam Docker




1. Docker Client dan Docker Daemon

sumber gambar :https://www.xenonstack.com/blog/docker-container

Sederhananya begini, di dalam dunia Docker ada dua benda utama yang penting: Docker Client dan Docker Daemon.

- Docker Client: Bayangkan ini seperti temanmu yang bertanya pada "boss" Docker apa yang harus dilakukan. Jadi, Docker Client ini yang akan mengirimkan permintaan-pemintaan seperti "Bang, tolong buatkan aku container ini ya."

- Docker Daemon: Nah, Docker Daemon ini adalah "bos" yang sebenarnya. Dia yang akan menerima permintaan-permintaan dari Docker Client dan bertanggung jawab untuk melakukan segala operasi yang diminta, seperti membangun, mendistribusikan, dan menjalankan Docker Container.


Yang menarik, keduanya ini bisa berada di komputer yang sama. Mereka berkomunikasi menggunakan sesuatu yang disebut "socket" dan bahasanya menggunakan RESTful API, tapi ini urusan teknis yang mungkin bisa kita bahas nanti. Intinya, Docker Client menyuruh, Docker Daemon melaksanakan.


2. Docker Images


sumber gambar : Docker Hub


Sekarang mari kita bicara tentang Docker Images. Ini seperti template-template untuk membuat Docker Container. Misalnya, kita punya gambaran ingin membuat container dengan aplikasi PHP, MySQL, dan server web Apache. Nah, kita bisa gunakan Docker Image sebagai dasarnya. Ada banyak Image keren di Docker Registry yang bisa kita unduh dan kita pakai sebagai dasar untuk kontainer kita.


3. Docker Containers



Oke, sekarang bayangkan Docker Container sebagai hasil nyata dari Docker Image tadi. Container ini adalah tempat di mana aplikasi sebenarnya berjalan. Ini adalah lingkungan yang terisolasi, artinya apa yang terjadi di dalam container, tetap di dalam container. Setiap kali kita melakukan perubahan di dalam container, seperti menginstal aplikasi tambahan, itu akan membuat "lapisan" baru di atas Image dasarnya.



4. Docker Registry



Kalau Docker Image adalah seperti perpustakaan, Docker Registry adalah tempat di mana perpustakaan itu disimpan. Ada registry yang publik dan privat. Registry publik yang paling terkenal adalah Docker Hub. Di sini kita bisa upload Image yang kita buat atau mengunduh Image yang dibuat oleh orang lain.


5. Dockerfile


Ini seperti resep masakan. Dockerfile berisi serangkaian instruksi yang akan dijalankan secara otomatis untuk membangun Docker Image. Jadi, kalau kita ingin membuat Image kustom, kita bisa tulis resepnya di Dockerfile.

Docker Engine itu bisa kita bayangkan sebagai "jantung" dari Docker-nya sendiri. Ini adalah tempat di mana semua hal berlangsung.


6. Docker Engine :

Bayangkan seperti ini ini seperti tempat tinggal untuk aplikasi Docker. Di dalamnya, ada beberapa komponen penting yang berperan untuk memastikan bahwa segala sesuatu berjalan dengan lancar.


Pertama-tama, ada Docker Container. Ini adalah tempat di mana aplikasi sebenarnya berjalan, dan Docker Engine ini yang mengelolanya. Dia juga punya peran dalam menjalankan Docker Client dan Docker Daemon, yang bertugas mengatur permintaan dan operasi-operasi yang dilakukan.

Namun, perannya tidak hanya sampai di situ. Docker Engine juga memberikan layanan umum yang dibutuhkan oleh semua Container. Misalnya, dia akan menangani bagaimana Container berkomunikasi satu sama lain (networking), cara mereka menyimpan dan mengakses data (storage), dan juga bagaimana mereka menggunakan sumber daya seperti memori dan CPU. Jadi, bisa dibilang, Docker Engine ini seperti paket lengkap yang menyediakan segala sesuatu yang diperlukan agar Docker Container bisa berjalan dengan baik.


Dan itulah terminologi dasar yang perlu kamu ketahui tentang Docker. Ada lagi beberapa konsep yang menarik lainnya, tapi kita akan bicarakan itu nanti. Nah, semoga penjelasan ini membantu kamu memahami dasar-dasar Docker dengan lebih baik!


Manfaat Docker:


- Efisien: Mengoptimalkan penggunaan sumber daya dengan menggabungkan banyak aplikasi dalam satu container.

- Portabel: Memudahkan pemindahan aplikasi ke berbagai platform tanpa perlu konfigurasi ulang.

- Skalabilitas: Menambahkan atau menghapus aplikasi dengan mudah sesuai kebutuhan.

- Keamanan: Mengisolasi aplikasi dan menjaga keamanan data.


Kesimpulan:


Docker Container adalah solusi ideal untuk menyederhanakan dan meningkatkan efisiensi pengembangan dan deployment aplikasi. Teknologi ini menyediakan lingkungan terisolasi yang konsisten, memungkinkan Anda untuk menjalankan aplikasi di mana saja dengan mudah dan aman.


Materi Baru yang Akan Dipelajari selanjutnya adalah :

- Instalasi Docker

- Istilah-istilah penting Docker: Image, repository, registry, pull, build, run, stop, start, logs, volumes, networks.

- Membuat Dockerfile: Sebuah file teks yang berisi instruksi untuk membangun image Docker.

- Menjalankan aplikasi web dengan Docker: Contoh penggunaan Docker untuk menjalankan aplikasi web sederhana.

- Penggunaan Docker Compose: Alat untuk mengelola dan menjalankan beberapa container secara bersamaan.

- Sumber daya belajar Docker: Tutorial, dokumentasi, dan komunitas online Docker.


Tips:

- Gunakan image resmi dari Docker Hub untuk keamanan dan stabilitas.

- Berikan nama yang jelas pada container dan image untuk memudahkan pengelolaan.

- Gunakan Docker Compose untuk mengelola beberapa container yang saling terkait.

- Pelajari dan praktikkan berbagai perintah Docker untuk mengoptimalkan penggunaan teknologi ini.

IDIARSO
IDIARSO

Menulis adalah kegiatan saya disela rutinitas kerja,silahkan berkomentar dibawah ini sebagai bahan masukan

Tidak ada komentar:

Posting Komentar