Apa itu Docker Engine?

Docker Engine adalah teknologi client-server inti yang menjadi pondasi semua proses dan alur kerja dalam membangun, mengirim, dan menjalankan aplikasi berbasis container dengan memanfaatkan komponen dan layanan Docker.

Secara umum, istilah Docker bisa merujuk ke Docker Engine itu sendiri atau ke perusahaan Docker Inc., yang menyediakan berbagai edisi teknologi containerization berbasis Docker Engine.

Komponen Docker Engine

Docker Engine adalah teknologi Open Source yang terdiri dari server dengan proses daemon bernama dockerd, sebuah REST API, dan antarmuka command-line (CLI) bernama docker. Engine ini membuat proses daemon di sisi server yang mengelola image, container, jaringan, dan storage volume. CLI memungkinkan pengguna berinteraksi dengan daemon Docker melalui API.

Docker Engine bersifat deklaratif, artinya admin dapat mendefinisikan kondisi target atau “desired state”. Engine kemudian otomatis menyesuaikan konfigurasi dan kondisi nyata supaya selalu sesuai dengan desired state tersebut.

Docker Engine vs. Docker Machine

Awalnya, Docker Engine dikembangkan khusus untuk sistem Linux, tapi sekarang sudah bisa berjalan secara native di Windows dan macOS. Docker Machine adalah tool untuk menginstal dan mengelola Docker Engine di berbagai virtual host atau versi lama macOS dan Windows. Saat Docker Machine diinstal di sistem lokal, perintah yang dijalankan lewat Docker Machine akan otomatis membuat virtual host, menginstal Docker, dan mengonfigurasi kliennya.

Sejak 2021, Docker Inc. sudah tidak lagi mengembangkan Docker Machine secara aktif dan merekomendasikan penggunaan aplikasi Docker Desktop untuk pengembangan container di macOS dan Windows.

Docker Engine dan swarm mode

Swarm adalah kumpulan Docker Engine yang terhubung membentuk cluster untuk menjalankan layanan aplikasi. Pada versi 1.12, Docker mengintegrasikan Docker Swarm langsung ke Docker Engine dan menamakan layanan orkestrasi ini sebagai swarm mode. Swarm mode adalah fitur clustering dan orkestrasi bawaan Docker Engine, meskipun Docker Engine juga bisa menjalankan orkestrator lain seperti Kubernetes.

Dengan Docker Engine, admin bisa membuat node manager dan worker dari satu disk image saat runtime, bukan saat deployment. Karena sifatnya deklaratif, swarm mode akan menjaga dan mengembalikan sistem ke desired state jika terjadi gangguan atau scaling.

The Docker stack consists of the physical server, host OS, Docker Engine, container OSes and configurations, and apps.
Docker Engine memegang peran penting dalam tech stack yang mendukung aplikasi berbasis container.

Plugin dan storage volume di Docker Engine

Docker Engine mendukung berbagai plugin yang tersedia sebagai image di registry privat atau repository publik seperti GitHub atau Docker Hub. Admin dapat mengelola siklus hidup plugin mulai dari instalasi sampai penghapusan lewat Docker Engine.

Plugin dapat membuat data volume, yaitu direktori yang ada di dalam container. Ada tiga jenis volume:

  • Host volume: berada langsung di file system host.
  • Named volume: dikelola oleh Docker di disk tempat volume dibuat dan diberi nama khusus.
  • Anonymous volume: mirip named volume tapi tidak terhubung ke sumber spesifik di luar container, sehingga lebih sulit diakses ulang.

Docker Engine dapat membuat data volume bersamaan dengan pembuatan container image dan bisa menyertakan data dari parent image. Container dapat berbagi dan menggunakan ulang volume, dan volume tidak akan otomatis dihapus ketika container dihapus. Karena Docker Engine tidak menghapus volume yang “terlantar”, pengguna bertanggung jawab mengelola sendiri data volumenya.

Apa itu Docker Engine?

Docker Engine adalah teknologi client-server inti yang menjadi pondasi semua proses dan alur kerja dalam membangun, mengirim, dan menjalankan aplikasi berbasis container dengan memanfaatkan komponen dan layanan Docker.

Secara umum, istilah Docker bisa merujuk ke Docker Engine itu sendiri atau ke perusahaan Docker Inc., yang menyediakan berbagai edisi teknologi containerization berbasis Docker Engine.

Komponen Docker Engine

Docker Engine adalah teknologi Open Source yang terdiri dari server dengan proses daemon bernama dockerd, sebuah REST API, dan antarmuka command-line (CLI) bernama docker. Engine ini membuat proses daemon di sisi server yang mengelola image, container, jaringan, dan storage volume. CLI memungkinkan pengguna berinteraksi dengan daemon Docker melalui API.

Docker Engine bersifat deklaratif, artinya admin dapat mendefinisikan kondisi target atau “desired state”. Engine kemudian otomatis menyesuaikan konfigurasi dan kondisi nyata supaya selalu sesuai dengan desired state tersebut.

Docker Engine vs. Docker Machine

Awalnya, Docker Engine dikembangkan khusus untuk sistem Linux, tapi sekarang sudah bisa berjalan secara native di Windows dan macOS. Docker Machine adalah tool untuk menginstal dan mengelola Docker Engine di berbagai virtual host atau versi lama macOS dan Windows. Saat Docker Machine diinstal di sistem lokal, perintah yang dijalankan lewat Docker Machine akan otomatis membuat virtual host, menginstal Docker, dan mengonfigurasi kliennya.

Sejak 2021, Docker Inc. sudah tidak lagi mengembangkan Docker Machine secara aktif dan merekomendasikan penggunaan aplikasi Docker Desktop untuk pengembangan container di macOS dan Windows.

Docker Engine dan swarm mode

Swarm adalah kumpulan Docker Engine yang terhubung membentuk cluster untuk menjalankan layanan aplikasi. Pada versi 1.12, Docker mengintegrasikan Docker Swarm langsung ke Docker Engine dan menamakan layanan orkestrasi ini sebagai swarm mode. Swarm mode adalah fitur clustering dan orkestrasi bawaan Docker Engine, meskipun Docker Engine juga bisa menjalankan orkestrator lain seperti Kubernetes.

Dengan Docker Engine, admin bisa membuat node manager dan worker dari satu disk image saat runtime, bukan saat deployment. Karena sifatnya deklaratif, swarm mode akan menjaga dan mengembalikan sistem ke desired state jika terjadi gangguan atau scaling.

The Docker stack consists of the physical server, host OS, Docker Engine, container OSes and configurations, and apps.
Docker Engine memegang peran penting dalam tech stack yang mendukung aplikasi berbasis container.

Plugin dan storage volume di Docker Engine

Docker Engine mendukung berbagai plugin yang tersedia sebagai image di registry privat atau repository publik seperti GitHub atau Docker Hub. Admin dapat mengelola siklus hidup plugin mulai dari instalasi sampai penghapusan lewat Docker Engine.

Plugin dapat membuat data volume, yaitu direktori yang ada di dalam container. Ada tiga jenis volume:

  • Host volume: berada langsung di file system host.
  • Named volume: dikelola oleh Docker di disk tempat volume dibuat dan diberi nama khusus.
  • Anonymous volume: mirip named volume tapi tidak terhubung ke sumber spesifik di luar container, sehingga lebih sulit diakses ulang.

Docker Engine dapat membuat data volume bersamaan dengan pembuatan container image dan bisa menyertakan data dari parent image. Container dapat berbagi dan menggunakan ulang volume, dan volume tidak akan otomatis dihapus ketika container dihapus. Karena Docker Engine tidak menghapus volume yang “terlantar”, pengguna bertanggung jawab mengelola sendiri data volumenya.

Networking di Docker Engine

Docker Engine menyediakan driver jaringan bawaan untuk membuat bridge network khusus yang mengatur komunikasi antar container. Docker Inc. menyarankan agar pengguna membuat bridge network sendiri untuk alasan keamanan.

Container bisa terhubung ke banyak jaringan, atau bahkan tidak ke jaringan sama sekali, dan bisa connect/disconnect tanpa mengganggu jalannya container. Docker Engine menyediakan tiga model jaringan utama:

  • Bridge: menambahkan container ke jaringan default docker0.
  • None: menempatkan container di network stack khusus container tersebut tanpa akses jaringan eksternal.
  • Host: menempatkan container di network stack host sehingga tidak ada isolasi antara host dan container.

Kalau tiga model ini kurang cocok, pengguna bisa membuat plugin network driver sendiri dengan aturan yang sama seperti plugin lainnya.

Networking di Docker Engine juga bisa bekerja bersama swarm mode untuk membuat overlay network di node manager tanpa perlu key-value store eksternal, yang biasanya dibutuhkan di cluster tanpa swarm mode. Overlay network ini hanya tersedia untuk worker node yang butuh layanan tersebut, dan otomatis meluas ke node baru yang menjalankan layanan. Membuat overlay network tanpa swarm mode memerlukan key-value store yang valid dan biasanya tidak direkomendasikan untuk kebanyakan pengguna.

Networking di Docker Engine

Docker Engine menyediakan driver jaringan bawaan untuk membuat bridge network khusus yang mengatur komunikasi antar container. Docker Inc. menyarankan agar pengguna membuat bridge network sendiri untuk alasan keamanan.

Container bisa terhubung ke banyak jaringan, atau bahkan tidak ke jaringan sama sekali, dan bisa connect/disconnect tanpa mengganggu jalannya container. Docker Engine menyediakan tiga model jaringan utama:

  • Bridge: menambahkan container ke jaringan default docker0.
  • None: menempatkan container di network stack khusus container tersebut tanpa akses jaringan eksternal.
  • Host: menempatkan container di network stack host sehingga tidak ada isolasi antara host dan container.

Kalau tiga model ini kurang cocok, pengguna bisa membuat plugin network driver sendiri dengan aturan yang sama seperti plugin lainnya.

Networking di Docker Engine juga bisa bekerja bersama swarm mode untuk membuat overlay network di node manager tanpa perlu key-value store eksternal, yang biasanya dibutuhkan di cluster tanpa swarm mode. Overlay network ini hanya tersedia untuk worker node yang butuh layanan tersebut, dan otomatis meluas ke node baru yang menjalankan layanan. Membuat overlay network tanpa swarm mode memerlukan key-value store yang valid dan biasanya tidak direkomendasikan untuk kebanyakan pengguna.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *