Traffine I/O

Bahasa Indonesia

2022-06-03

Ikhtisar Docker

Apa itu Docker

Docker adalah platform kontainerisasi open-source yang memungkinkan pengembang untuk mengemas aplikasi beserta dependensinya ke dalam kontainer yang ringan, portabel, dan mandiri. Kontainer-kontainer ini dapat dijalankan pada sistem apa pun yang telah terpasang Docker, tanpa terikat oleh infrastruktur yang digunakan. Fleksibilitas ini memungkinkan pengembang untuk fokus menulis kode tanpa perlu khawatir tentang kompleksitas mengelola lingkungan atau konfigurasi yang berbeda.

Kontainer vs. Mesin Virtual

Kontainer dan mesin virtual (VM) memiliki beberapa kesamaan, tetapi juga memiliki perbedaan yang penting. VM menjalankan seluruh sistem operasi pada lapisan perangkat keras virtual, yang dapat menyebabkan ketidak-efisienan resource dan waktu startup yang lebih lama. Di sisi lain, kontainer menggunakan kernel sistem host dan menggunakan resource yang lebih sedikit, sehingga lebih cepat, lebih ringan, dan lebih scalable.

Manfaat Docker

Docker menawarkan beberapa keuntungan dibandingkan dengan metode pengiriman tradisional:

  • Konsistensi
    Docker memastikan aplikasi dijalankan dengan cara yang sama di berbagai lingkungan, mengurangi masalah "it works on my machine".

  • Isolasi
    Kontainer menyediakan lingkungan yang aman dan terisolasi untuk aplikasi, mencegah konflik dan memudahkan pengelolaan dependensi.

  • Scalability
    Docker memungkinkan skalabilitas horizontal yang mudah, sehingga memungkinkan penggunaan beberapa instance kontainer untuk menangani beban yang meningkat.

  • Portabilitas
    Dengan Docker, pengguna dapat menjalankan aplikasi pada sistem apa pun yang mendukung Docker, menyederhanakan proses pengiriman dan migrasi.

  • Versi
    Gambar Docker dapat diberi nomor versi dan diperbarui, sehingga memudahkan untuk kembali ke versi sebelumnya atau untuk menginstal pembaruan.

Komponen Docker

Docker memiliki beberapa komponen utama:

  • Docker Engine
    Inti dari Docker, bertanggung jawab untuk membangun dan menjalankan kontainer.

  • Gambar Docker
    Template hanya-baca yang digunakan untuk membuat kontainer.

  • Kontainer Docker
    Instance yang sedang berjalan dari gambar Docker yang mencakup aplikasi dan dependensinya.

  • Docker Hub
    Registri publik untuk berbagi dan mendistribusikan gambar Docker.

  • Dockerfile
    Script yang mendefinisikan cara membuat gambar Docker dengan menentukan gambar dasar, dependensi, dan konfigurasi.

Arsitektur Docker

Docker mengikuti arsitektur client-server, yang terdiri dari beberapa komponen yang bekerja sama untuk membangun, mendeploy, dan mengelola kontainer.

Docker Architecture
Architecture of Docker

Docker Engine

Docker Engine adalah inti dari platform Docker. Bertanggung jawab untuk membuat, menjalankan, dan mengelola kontainer. Docker Engine terdiri dari Docker daemon (dockerd), REST API, dan Docker CLI.

  • Docker daemon (dockerd)
    Layanan latar belakang yang berjalan pada host yang mendengarkan permintaan API Docker dan mengelola objek Docker seperti kontainer, gambar, dan jaringan.

  • REST API
    Memungkinkan komunikasi antara daemon Docker dan klien Docker.

  • Docker CLI
    Antarmuka baris perintah yang memungkinkan pengguna berinteraksi dengan daemon Docker.

Klien Docker dan Docker Daemon

Klien Docker berkomunikasi dengan daemon Docker untuk melakukan berbagai tugas, seperti membangun dan menjalankan kontainer. Pengguna berinteraksi dengan klien Docker menggunakan Docker CLI atau alat-alat pihak ketiga lainnya.

Ketika pengguna menjalankan perintah, klien Docker mengirimkan permintaan ke daemon Docker melalui REST API. Daemon Docker memproses permintaan dan mengembalikan hasil ke klien.

Gambar dan Registri Docker

Gambar Docker adalah blok bangunan dari kontainer. Mereka adalah template hanya-baca yang berisi kode aplikasi, dependensi, perpustakaan, dan lingkungan runtime.

Gambar Docker disimpan dalam registri, yang merupakan repositori pusat untuk berbagi dan mendistribusikan gambar. Docker Hub adalah registri publik default, tetapi pengguna juga dapat membuat registri pribadi untuk organisasi mereka.

Kontainer Docker

Kontainer Docker adalah instance yang sedang berjalan dari gambar Docker. Kontainer adalah lingkungan yang ringan, portabel, dan terisolasi yang mencakup aplikasi dan dependensinya.

Kontainer dibuat dari gambar dan dapat dimulai, dihentikan, dan dihapus. Setiap kontainer memiliki sistem file dan jaringan yang unik, memastikan isolasi dari kontainer lain pada host yang sama.

Jaringan Docker

Docker menyediakan kemampuan jaringan bawaan yang memungkinkan kontainer berkomunikasi satu sama lain dan dengan sistem eksternal. Jaringan Docker memungkinkan Anda mengisolasi dan mengamankan lalu lintas kontainer, menetapkan alamat IP, dan menentukan aturan komunikasi antara kontainer.

Docker mendukung berbagai driver jaringan, masing-masing dengan kasus penggunaan dan karakteristik tertentu:

  • Bridge
    Driver jaringan default, cocok untuk kontainer independen.

  • Host
    Melewati stack jaringan Docker, memungkinkan kontainer untuk berbagi stack jaringan host secara langsung.

    -Overlay
    Mengaktifkan jaringan multi-host, berguna untuk aplikasi terdistribusi dan orkestrasi kontainer.

  • Macvlan
    Memberikan alamat MAC ke kontainer, membuatnya tampak sebagai perangkat fisik pada jaringan.

Volume dan Penyimpanan Docker

Docker menyediakan sistem penyimpanan untuk mengelola data dalam kontainer. Volume Docker adalah metode yang disukai untuk mempertahankan data yang dihasilkan oleh kontainer atau berbagi data antar kontainer. Volume dibuat dan dikelola oleh Docker dan dapat dengan mudah dipulihkan, dimigrasikan, atau dibagikan antar kontainer dan host.

Referensi

https://www.docker.com/
https://docker-curriculum.com/
https://www.geeksforgeeks.org/architecture-of-docker/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!