Mengenal Docker dan Kapan Harus Menggunakannya?

Latar Belakang

Kita awali dari latar belakang dulu deh, Docker ini lahir untuk menjawab keresahan para developer dalam mengembangkan sebuah perangkat lunak, misal programmer A dan Programmer B yang menuliskan kode atau ngoding dengan sistem operasi yang berbeda, programmer A menggunakan windows dan Programmer B menggunakan Mac, dan masalah muncul ketika aplikasi coba dijalankan pada perangkat yang berbeda, perbedaan konfigurasi akan mempengaruhi proses selanjutnya, begitu seterusnya tentu akan menghambat proses production suatu program.

Pengertian Docker

Harapannya setelah membaca latar belakang di atas, teman-teman dapat sedikit gambaran permasalahan developer sebelum menggunakan docker, jadi Docker ini adalah sebuah wadah atau platform open source untuk mengembangkan, mengirim dan menjalankan sebuah aplikasi. Docker memungkinkan kita untuk memisahkan aplikasi dengan infrastruktur yang sedang kita gunakan, sehingga kita dapat mengirim aplikasi yang dikembangkan secara cepat dan efisien kedalam wadah produksi Docker. 

Teknologi Docker 

Docker ditulis dalam bahasa pemrograman Go dan memanfaatkan beberapa fitur kernel Linux untuk memberikan fungsionalitas. Docker menggunakan teknologi yang disebut namespace untuk menyediakan ruang kerja terisolasi yang disebut container. Saat kita menjalankan container, Docker membuat satu set nama ruang untuk container tersebut. Ruang ini menyediakan lapisan isolasi. Setiap aspek wadah berjalan di ruang nama yang terpisah dan aksesnya terbatas pada ruang nama itu.

Platform Docker

Docker menyediakan kemampuan untuk mengemas dan menjalankan aplikasi secara terisolasi yang disebut sebagai wadah. Isolasi dan keamanan memungkinkan kita menjalankan banyak kontainer secara bersamaan pada host tertentu. Wadah ini dikenal sangat ringan dan berisi semua yang diperlukan untuk menjalankan aplikasi, jadi kita tidak perlu bergantung pada apa yang saat ini terinstall pada host. Kita juga dapat dengan mudah berbagi wadah saat bekerja, dan memastikan semua pengguna yang di ajak mendapatkan wadah serta fungsi yang sama

Docker dilengkapi dengan alat dan platform untuk mengelola siklus hidup container, seperti:
Container, Untuk mengembangkan aplikasi dan komponen pendukung lainnya.
Wadah, menjadi unit untuk mendistribusikan dan menguji aplikasi.
Lingkungan produksi, Saat aplikasi siap diluncurkan, aplikasi dapat diterapkan ke lingkungan produksi sebagai wadah atau layanan yang dikelola baik secara lokal, cloud ataupun hybrid (lokal dan cloud)

Manfaat Docker

Berikut adalah manfaat penggunaan Docker dalam pengembangan perangkat lunak:

Pengiriman aplikasi yang cepat dan konsisten

Docker meringkas siklus hidup pengembangan (SDLC) dengan memungkinkan pengembang untuk bekerja di lingkungan standar menggunakan wadah lokal yang menyediakan aplikasi dan layanan. Wadah ini terintegrasi secara berkelanjutan dengan alur kerja pengiriman (CI/CD).

Perhatikan contoh skenario berikut:
  • Developer menulis kode secara lokal dan membagikan pekerjaan dengan kolega menggunakan wadah Docker.
  • Developer menggunakan Docker untuk mendorong aplikasi kelingkungan pengujian dan mengeksekusi pengujian secara otomatis dan manual.
  • Ketika developer menemukan bug, bug dapat diperbaiki di lingkungan pengembangan dan menyebarkannya kembali ke lingkungan pengujian untuk diuji dan divalidasi.
  • Saat pengujian selesai, developer mendapatkan feedback pelanggan semudah mendorong image yang diperbarui ke lingkungan produksi.

Penerapan dan penskalaan yang responsif

Platform berbasis Docker container memungkinkan beban kerja yang sangat portabel. Docker container dapat berjalan di laptop lokal pengembang, fisik atau virtual mesin di pusat data, penyedia cloud, atau di lingkungan campuran (hybrid).

Portabilitas Docker dan sifatnya yang ringan ini juga membuatnya mudah secara dinamis mengelola beban kerja, meningkatkan atau meruntuhkan aplikasi dan layanan sebagai kebutuhan bisnis.

Menjalankan lebih banyak beban kerja pada perangkat keras yang sama

Docker yang diklaim ringan dan cepat ini dapat menekan biaya penggunaan virtual mesin berbasis hypervisor, sehingga pelaku bisnis dapat menggunakan banyak komputasi.

Arsitektur Docker

Docker menggunakan arsitektur client-server. Klien Docker berkomunikasi dengan daemon Docker yang melakukan pekerjaan berat dalam membangun, menjalankan, dan mendistribusikan container Docker kita. Klien Docker dan daemon dapat berjalan pada sistem yang sama, atau kita dapat menghubungkan klien Docker ke daemon Docker jarak jauh. Klien Docker dan daemon berkomunikasi menggunakan REST API, melalui soket UNIX atau antarmuka jaringan. Klien Docker lainnya yaitu Docker Compose, yang memungkinkan kita bekerja dengan aplikasi yang terdiri dari sekumpulan container.
Docker Architecture

Istilah-Istilah dalam Docker

  • Daemon Docker ( dockerd), berfungsi untuk mendengarkan permintaan API Docker dan mengelola objek Docker seperti image, wadah, jaringan, dan volume. Daemon juga dapat berkomunikasi dengan daemon lain untuk mengelola layanan Docker.
  • Klien Docker ( docker), adalah fungsi utama pengguna Docker berinteraksi dengan Docker. Saat kita menggunakan perintah seperti docker run, klien mengirimkan perintah ini ke dockerd untuk dijalankan. Perintah pada docker menggunakan API Docker. Klien Docker ini dapat berkomunikasi dengan lebih dari satu daemon.
  • Docker Desktop, adalah aplikasi berbasis GUI yang diinstal pada lingkungan Mac, Windows, atau Linux.
  • Registri Docker, berfungsi untuk menyimpan image Docker. Docker Hub adalah registri publik yang dapat digunakan siapa saja dan Docker dikonfigurasi untuk mencari image di Docker Hub secara default. KIta juga dapat menjalankan registry secara pribadi.
  • Docker Run, saat kita menggunakan docker pull atau docker run, image diambil dari registry kita yang dikonfigurasi. Saat kita menggunakan docker push, image akan didorong ke registry yang sudah dikonfigurasi.
  • Objek , Saat menggunakan Docker, kita dapat membuat dan menggunakan image, wadah, jaringan, volume, plugin, dan objek lainnya.
  • Images, atau kumpulan gambar adalah template read-only dengan instruksi untuk membuat container Docker. Dalam penerapannya, sebuah image didasarkan pada image lain dengan beberapa penyesuaian. Misalnya, kita dapat membuat gambar yang didasarkan pada image ubuntu, tetapi secara bersamaan menginstal server web Apache dan detail konfigurasi yang diperlukan untuk membuat aplikasi agar dapat berjalan.
  • Container/Wadah, Wadah adalah instance image yang dapat dijalankan. Kita dapat membuat, memulai, menghentikan, memindahkan, atau menghapus container menggunakan Docker API atau CLI. Kita dapat menghubungkan container satu ke beberapa jaringan, melampirkan penyimpanan ke dalamnya, atau bahkan membuat image baru berdasarkan statusnya saat ini.  Secara default, sebuah container relatif terisolasi dengan baik dari container lain dan mesin hostnya. Kita juga dapat mengontrol seberapa terisolasi jaringan, penyimpanan, atau subsistem dasar container lainnya dari container lain atau dari mesin host. Wadah ditentukan oleh imagenya serta opsi konfigurasi yang diberikan pada saat membuat atau memulai container. Saat sebuah container dikeluarkan, setiap perubahan pada statusnya yang tidak disimpan dalam penyimpanan persisten akan hilang.

Sampai disini kita sudah mengenal apa itu docker, teknologi docker, kapan harus menggunakan docker dan fitur-fitur dasar yang ditawarkan oleh Docker.

Sumber
https://docs.docker.com/get-started/overview/

Posting Komentar

0 Komentar