Docker adalah platform sumber terbuka (open-source) untuk mengembangkan, mengemas dan menjalankan aplikasi di dalam sebuah lingkungan kontainer. Docker bisa memisahkan aplikasi Anda dari infrastruktur, sehingga Anda dapat mengirimkan software dengan lebih cepat.

Dengan menggunakan Docker, Anda dapat mengelola infrastruktur Anda dengan cara yang sama seperti Anda mengelola aplikasi Anda. Dengan memanfaatkan metodologi Docker untuk pendistribusian, pengujian, dan pen-deploy-an kode, maka secara signifikan Anda dapat mengurangi penundaan antara penulisan kode dan menjalankannya di ekosistem produksi.

Docker didistribusikan di bawah lisensi Apache-2.0 (Docker Engine hanya untuk Linux) dan Docker Desktop tunduk pada End-user license agreement.

Tentang Platform Docker

Docker menyediakan kemampuan untuk mengemas dan menjalankan aplikasi ke dalam lingkungan yang terisolasi secara longgar yang disebut kontainer. Isolasi dan keamanannya memungkinkan Anda menjalankan banyak kontainer secara bersamaan pada host / server tertentu. Kontainer yang ringan dan berisi semua yang dibutuhkan untuk menjalankan aplikasi, sehingga Anda tidak perlu bergantung pada apa yang terinstal pada sistem host / server. Anda dapat berbagi kontainer saat Anda bekerja, dan memastikan bahwa setiap orang yang Anda ajak berbagi akan mendapatkan kontainer yang sama dan berfungsi dengan cara yang sama.

Docker Menyediakan Tool dan Platform untuk Mengelola Siklus Hidup Kontainer Anda:
  • Kembangkan aplikasi Anda dan komponen pendukungnya menggunakan kontainer.
  • Kontainer menjadi unit untuk mendistribusikan dan menguji aplikasi Anda.
  • Saat Anda siap, deploy aplikasi Anda ke lingkungan produksi sebagai kontainer atau layanan ter-orkestrasi. Hal ini bekerja dengan cara yang sama terlepas dari apakah lingkungan produksi Anda adalah data center lokal, provider cloud, atau gabungan hybrid dari keduanya.
Pengertian dan Penjelasan Docker

Docker juga sering disebut sebagai teknologi containerization. Tidak seperti Virtual Machine (VM) yang memerlukan sistem operasi guest yang berat, kontainer Docker menggunakan kernel sistem operasi di level host, yang membuatnya jauh lebih cepat, lebih ringan, serta lebih efisien dalam hal penggunaan resource server.

  • Container: Wadah terisolasi untuk menjalankan aplikasi.
  • Image: Template read-only yang menjadi dasar pembuatan container Docker.
  • Dockerfile: File teks berisi instruksi untuk membangun Docker Image.
  • Docker Hub: Layanan registry untuk menyimpan dan berbagi Docker.
Komponen Utama Arsitektur Docker
  1. Docker Client: Interface (CLI) untuk berinteraksi dengan Docker.
  2. Docker Daemon (Server): Proses yang mengelola container, image, network, dan volume.
  3. Docker Registry: Tempat menyimpan image (contoh: Docker Hub).

Docker membantu developer meningkatkan produktivitas dengan mempercepat siklus pengembangan dan menyederhanakan pengelolaan aplikasi modern yang kompleks.

Fungsi dan Kegunaan Docker
  • Konsistensi Lingkungan: Menghilangkan masalah “it works on my machine” karena lingkungan pengembangan, testing, dan produksi identik.
  • Efisiensi Resource: Memungkinkan menjalankan banyak container sekaligus dalam satu host / server karena tidak membutuhkan beban OS tambahan.
  • Portabilitas: Aplikasi mudah dipindahkan antar satu server, cloud VPS (AWS, Azure, GCP), atau laptop.
  • Mempercepat Alur CI/CD: Sangat cocok untuk alur Continuous Integration/Continuous Deployment (CI/CD) karena proses build dan deploy yang cepat.
  • Isolasi Aplikasi: Mencegah konflik antar aplikasi. Jika satu container bermasalah, container lain tidak akan terganggu.
  • Skalabilitas: Memudahkan peningkatan atau penurunan jumlah container sesuai kebutuhan.

 

Arsikter Docker
Arsikter Docker
Apa Saja Kegunaan Docker?

Pengiriman aplikasi yang cepat dan konsisten
Docker menyederhanakan siklus hidup pengembangan dengan memungkinkan developer untuk bekerja di lingkungan standar menggunakan kontainer lokal yang menyediakan aplikasi dan layanan Anda. Kontainer sangat bagus untuk alur kerja continuous integration and continuous delivery (CI/CD).

Contoh Skenario Berikut:
  1. Developer menulis kode secara lokal dan berbagi pekerjaan dengan rekan-rekannya menggunakan kontainer Docker.
  2. Mereka menggunakan Docker untuk mengirimkan aplikasi ke lingkungan pengujian, kemudian menjalankan pengujian secara otomatis dan manual.
  3. Ketika developer menemukan bug, mereka dapat memperbaikinya di lingkungan pengembangan dan kemudian menyebarkannya kembali ke lingkungan pengujian untuk melakukan pengujian dan validasi.
  4. Setelah pengujian selesai, mengirimkan perbaikan ke klien semudah mengirimkan image Docker yang diperbarui ke lingkungan produksi.
Deployment Secara Responsif dan Scaling

Platform berbasis kontainer Docker memungkinkan beban kerja yang sangat portabel. Kontainer Docker dapat berjalan di laptop lokal developer, di mesin fisik atau virtual machine (VM) di data cebter, provider cloud, atau dalam enviroment hybrid (campuran).

Portabilitas dan sifat ringan dari Docker juga memudahkan pengelolaan workload secara dinamis, meningkatkan atau mengurangi aplikasi dan layanan sesuai kebutuhan bisnis yang hampir secara real-time.

Menjalankan Lebih Banyak Workload di Hardware yang sama

Docker ini ringan dan cepat, yang menyediakan alternatif layak dan hemat biaya untuk virtual machine (VM) berbasis hypervisor, sehingga Anda dapat menggunakan lebih banyak kapasitas server untuk mencapai tujuan bisnis Anda. Docker sangat cocok untuk ekosistem dengan kepadatan tinggi dan untuk deployment kecil dan menengah, dimana Anda perlu melakukan lebih banyak hal dengan resouce yang terbatas.

Teknologi yang Mendasari Docker

Docker ditulis dalam bahasa pemrograman Go dan memanfaatkan beberapa fitur kernel Linux untuk mengirimkan fungsinya. Docker menggunakan teknologi yang disebut namespace untuk menyediakan ruang kerja terisolasi yang disebut kontainer. Saat Anda menjalankan kontainer, Docker membuat serangkaian namespace untuk kontainer tersebut.

Namespace ini menyediakan lapisan isolasi. Setiap aspek kontainer berjalan di namespace terpisah dan aksesnya terbatas pada namespace tersebut.

Arsitektur Docker

Docker menggunakan arsitektur di sisi client-server. Klien Docker berkomunikasi dengan daemon Docker, yang melakukan pekerjaan berat dalam membangun, menjalankan, dan mendistribusikan kontainer Docker. Klien dan daemon Docker dapat berjalan pada sistem yang sama, atau dapat menghubungkan klien Docker ke daemon Docker secara remote.

Klien dan daemon Docker berkomunikasi menggunakan REST API, melalui soket UNIX atau network interface. Klien Docker lainnya adalah Docker Compose, yang memungkinkan Anda bekerja dengan aplikasi yang terdiri dari sekumpulan kontainer.

Docker Daemon

Docker Daemon (dockerd) mendengarkan permintaan API Docker dan mengelola objek Docker seperti image, container, network, dan volume. Daemon juga dapat berkomunikasi dengan daemon lainnya untuk mengelola layanan Docker.

Docker Client

Klien Docker (docker) adalah cara utama yang digunakan oleh banyak user Docker untuk berinteraksi dengan Docker. Saat Anda menjalankan command seperti “docker run”, klien mengirimkan perintah ini ke dockerd, yang kemudian menjalankannya. Perintah “docker” menggunakan API Docker. Klien Docker dapat berkomunikasi dengan lebih dari satu daemon.

Docker Desktop (Debian 13 "Trixie")
Docker Desktop (Debian 13 “Trixie”)
Docker Desktop

Docker Desktop adalah aplikasi yang secara mudah dapat diinstal di lingkungan Mac, Windows, dan Linux Desktop yang memungkinkan untuk membangun dan berbagi aplikasi dan layanan mikro berbasis container. Docker Desktop mencakup daemon Docker (dockerd), Docker client (docker), Docker Compose, Docker Content Trust, Kubernetes, dan Credential Helper. Untuk informasi lebih lanjut, baca dokumentasi Docker Desktop.

Docker Registry

Docker Registry menyimpan image Docker. Docker Hub adalah registri publik yang dapat digunakan oleh siapa pun, dan Docker secara default mencari image di Docker Hub. Bahkan Anda dapat menjalankan registri pribadi Anda sendiri.

Saat Anda menjalankan perintah “docker pull” atau “docker run”, Docker akan menarik image yang dibutuhkan dari registri yang telah Anda konfigurasi. Kemudian saat Anda menjalankan perintah “docker push”, maka Docker akan mengirimkan image Anda ke registri yang telah Anda konfigurasi.

Docker Object

Saat Anda menggunakan Docker, Anda membuat dan menggunakan image, kontainer, network, volume, plugin, dan objek lainnya. Bagian ini adalah gambaran singkat tentang beberapa objek tersebut.

Tentang Docker Image

Image adalah templat read-only yang berisi satu set instruksi untuk membuat kontainer Docker. Sebuah image seringkali berbasiskan pada image lain, namun dengan beberapa penyesuaian tambahan. Misalnya, Anda dapat membuat image yang didasarkan pada image Ubuntu tetapi menyertakan web server Nginx, MySQL dan aplikasi Anda, serta detail konfigurasi yang diperlukan agar aplikasi Anda dapat berjalan dengan baik.

Anda bisa membuat image Anda sendiri atau Anda mungkin hanya menggunakan image yang dibuat oleh orang lain dan dipublikasikan di registri. Untuk membuat image Anda sendiri, Anda perlu membuat Dockerfile dengan sintaks sederhana untuk mendefinisikan langkah-langkah yang diperlukan untuk membuat image dan menjalankannya.

Setiap instruksi dalam Dockerfile membuat lapisan dalam image. Ketika Anda mengubah Dockerfile dan rebuild image, hanya lapisan yang telah berubah yang akan di-rebuild. Inilah yang sebagian membuat image cukup ringan, kecil, dan cepat, jika dibandingkan dengan teknologi berbasis virtualisasi lainnya.

Tentang Kontainer Docker

Kontainer Docker adalah instance yang dapat dijalankan dari sebuah image. Anda dapat membuat, start, stop, memindahkan, atau menghapus kontainer menggunakan API atau Docker CLI. Anda dapat menghubungkan satu kontainer ke satu network atau lebih, dan melampirkan storage ke dalamnya, atau bahkan membuat image baru berdasarkan current state.

Sebuah kontainer secara default relatif terisolasi dengan baik dari kontainer lain dan mesin host-nya. Anda dapat mengontrol seberapa terisolasi jaringan, storage, atau subsistem lain yang mendasarinya dari kontainer lain atau dari mesin host.

Sebuah kontainer didefinisikan oleh image-nya serta opsi konfigurasi apa pun yang Anda berikan saat Anda membuat atau memulainya. Saat kontainer dihapus, setiap perubahan pada state-nya yang tidak disimpan dalam penyimpanan persisten akan hilang.

Sumber: docs.docker.com

LEAVE A REPLY

Please enter your comment!
Please enter your name here