Host #

Ketika membahas Docker, banyak orang langsung fokus pada image dan container. Padahal, ada satu komponen yang sering luput dibahas namun sangat krusial: Docker Host. Tanpa host, container tidak akan pernah bisa berjalan.

Docker Host adalah lingkungan tempat Docker Engine berjalan dan di sanalah seluruh container hidup, berbagi resource, dan berinteraksi dengan sistem operasi. Memahami konsep host ini penting agar kita benar-benar paham bagaimana Docker bekerja di level sistem operasi, bukan sekadar di level perintah docker run.

Diagram Konsep Docker Host #

Berikut adalah gambaran sederhana untuk membantu memahami posisi Docker Host dalam arsitektur Docker:

+--------------------------------------------------+
|                  Docker Host                     |
|                                                  |
|  +---------------- Docker Engine --------------+ |
|  |                                             | |
|  |  +------------+  +------------+             | |
|  |  | Container A|  | Container B|   ...       | |
|  |  +------------+  +------------+             | |
|  |                                             | |
|  +---------------------------------------------+ |
|                                                  |
|  OS Kernel (Linux Kernel / Hypervisor Layer)     |
+--------------------------------------------------+
|              Hardware (CPU, RAM, Disk)           |
+--------------------------------------------------+

Diagram ini menunjukkan bahwa:

  • Container berjalan di atas Docker Engine
  • Docker Engine berjalan di dalam Docker Host
  • Semua container berbagi kernel OS milik host

Apa Itu Docker Host? #

Docker Host adalah mesin (fisik atau virtual) yang:

  • Menjalankan Docker Engine
  • Menyediakan kernel OS, CPU, memori, storage, dan network
  • Menjadi tempat container dibuat, dijalankan, dihentikan, dan dihapus

Secara sederhana:

Docker Host = OS + Docker Engine + Resource Hardware

Docker Host bisa berupa:

  • Laptop developer
  • VM di cloud (EC2, GCE, Azure VM)
  • Node di Kubernetes
  • Server bare metal di data center

Komponen Utama di Dalam Docker Host #

1. Sistem Operasi (Host OS) #

Docker berjalan langsung di atas kernel OS milik host.

  • Di Linux: Docker menggunakan kernel Linux secara native
  • Di macOS & Windows: Docker menggunakan VM Linux (karena container butuh Linux kernel)

Inilah alasan mengapa:

  • Container lebih ringan dibanding VM
  • Startup container sangat cepat

2. Docker Engine #

Docker Engine adalah inti dari Docker Host, terdiri dari:

  • Docker Daemon (dockerd) → mengelola container, image, network, volume
  • REST API → jembatan antara CLI dan daemon
  • Docker CLI → antarmuka untuk user

Semua perintah seperti docker run, docker build, dan docker ps dieksekusi oleh Docker Engine di dalam host.

3. Resource Host (CPU, RAM, Disk, Network) #

Semua container di dalam satu host:

  • Berbagi CPU dan RAM yang sama
  • Menggunakan storage host (via volume atau filesystem layer)
  • Menggunakan network host (bridge, overlay, host network)

Docker tidak menciptakan resource baru, melainkan mengisolasi dan membatasi resource host.


Bagaimana Container Menggunakan Host? #

Container bukan VM. Container:

  • Tidak memiliki kernel sendiri
  • Tidak boot OS
  • Tidak mengemulasi hardware

Sebaliknya, container:

  • Menggunakan Linux Namespace untuk isolasi
  • Menggunakan cgroups untuk pembatasan resource
  • Berjalan sebagai proses biasa di host

Itulah mengapa:

  • Container terlihat seperti aplikasi biasa dari sisi host
  • Namun tetap terisolasi satu sama lain

Docker Host vs Virtual Machine Host #

AspekDocker HostVM Host
Kernel OSShared (host)Setiap VM punya kernel
OverheadSangat kecilBesar
StartupDetikMenit
IsolasiProcess-levelOS-level

Docker Host memungkinkan kepadatan aplikasi yang jauh lebih tinggi dibanding VM.


Tipe-Tipe Docker Host #

1. Local Docker Host #

Biasanya digunakan untuk:

  • Development
  • Testing

Contoh:

  • Docker Desktop di macOS / Windows
  • Docker Engine di Linux laptop

2. Cloud Docker Host #

Digunakan untuk:

  • Production
  • Staging

Contoh:

  • EC2 + Docker
  • GCE VM + Docker
  • VM di Azure

3. Container Host di Kubernetes #

Dalam Kubernetes:

  • Setiap node adalah Docker Host (atau container runtime host)
  • Docker Engine bisa digantikan oleh containerd atau CRI-O

Konsep host tetap sama: node menyediakan kernel dan resource.


Tantangan dan Risiko di Docker Host #

Beberapa hal penting yang perlu diperhatikan:

1. Resource Contention #

Jika tidak dibatasi:

  • Satu container bisa menghabiskan CPU/RAM
  • Container lain ikut terdampak

Solusi:

  • Gunakan limit CPU & memory

2. Single Point of Failure #

Jika satu host mati:

  • Semua container di dalamnya ikut mati

Solusi:

  • Gunakan multiple host
  • Orchestrator seperti Kubernetes

3. Security #

Karena kernel di-share:

  • Kerentanan kernel bisa berdampak luas

Solusi:

  • Update OS rutin
  • Gunakan user namespace
  • Jalankan container non-root

Best Practice #

Beberapa praktik terbaik:

  • Gunakan OS minimal (Ubuntu Server, Alpine, Bottlerocket)
  • Jangan install aplikasi lain di host
  • Pisahkan host untuk production dan non-production
  • Batasi resource container
  • Monitor host (CPU, memory, disk, inode)

Penutup #

Docker Host adalah fondasi utama dari seluruh ekosistem Docker. Container yang terlihat ringan dan fleksibel sebenarnya sangat bergantung pada host tempat mereka berjalan.

Dengan memahami Docker Host, kita tidak hanya tahu cara menjalankan container, tetapi juga:

  • Mengerti bagaimana Docker bekerja di level OS
  • Bisa mendesain arsitektur yang lebih stabil
  • Lebih siap menghadapi isu performa dan keamanan

Docker bukan sekadar tool, tapi cara baru memanfaatkan host secara efisien dan modern.

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact