Proses Perangkat Lunak & Rahasia Isolasi Linux
Di balik layar, kontainer Docker sebenarnya adalah Proses Linux Biasa yang diisolasi menggunakan fitur bawaan dari Linux Kernel.
Dua Teknologi Utama Linux Kernel:
1. Linux Namespaces (Isolasi Visibilitas)
Namespaces membatasi apa yang bisa dilihat oleh suatu proses. Seolah-olah proses tersebut hidup di dalam komputer tersendiri:
- PID Namespace: Mengisolasi Process ID. Di dalam kontainer, proses utama memiliki PID 1, padahal di Host OS memiliki PID misal 4892.
- NET Namespace: Mengisolasi kartu jaringan, alokasi IP Address, routing table, dan port.
- MNT (Mount) Namespace: Mengisolasi direktori mount dan file system.
- IPC Namespace: Mengisolasi komunikasi antar proses (Inter-Process Communication).
- UTS Namespace: Mengisolasi Hostname dan nama domain.
- USER Namespace: Mengisolasi User ID dan Group ID (User root di kontainer bisa dipetakan ke non-root di host).
2. Control Groups / cgroups (Pembatasan Sumber Daya)
Jika Namespace membatasi apa yang bisa *dilihat*, cgroups membatasi apa yang bisa *digunakan* oleh kontainer (misal: Maksimal 512MB RAM dan 1.5 CPU core).
⚠️ Keamanan: Berkat isolasi Namespace & cgroups, kontainer yang diretas tidak dapat mengakses file sistem host atau kontainer tetangganya.