"Di laptopku jalan kok." Kalimat legendaris ini sudah merusak hari kerja jutaan developer — dan Docker adalah alat yang dibuat supaya kamu tidak perlu mengucapkannya lagi.
"Di laptopku jalan kok" — masalah yang diselesaikan Docker
App yang jalan mulus di laptop kamu bisa tiba-tiba error di laptop teman atau di server. Penyebabnya hampir selalu sama: environment-nya beda — versi Node/Python tidak sama, ada library sistem yang belum ter-install, konfigurasi OS-nya lain.
Container menyelesaikan ini dengan membungkus app kamu bersama semua yang dia butuhkan — runtime, library, konfigurasi — jadi satu paket yang jalan sama persis di mesin mana pun.
Docker adalah platform paling populer untuk membuat dan menjalankan container: kamu deskripsikan environment app sekali, semua orang (dan semua server) menjalankan salinan yang identik.
Container vs Virtual Machine — beda level isolasinya
Kalau kamu pernah pakai VirtualBox/VMware, wajar mengira container itu "VM versi mini". Padahal cara kerjanya beda level:
flowchart LR
subgraph VM["Virtual Machine"]
direction TB
A1["App"] --> G1["Guest OS utuh (GB-an)"] --> HV["Hypervisor"] --> HW1["Host OS + Hardware"]
end
subgraph CT["Container"]
direction TB
A2["App + dependency (MB-an)"] --> DE["Docker Engine"] --> HW2["Host OS + Hardware"]
end
| Container | Virtual Machine | |
|---|---|---|
| Yang dibawa | App + dependency saja | App + seluruh guest OS |
| Ukuran tipikal | Puluhan–ratusan MB | Beberapa GB |
| Waktu start | Detik | Menit |
| Isolasi | Level proses, share kernel host | Level hardware, kernel sendiri |
| Muat di 1 laptop | Puluhan container | Beberapa VM |
Apa yang sebenarnya di-share: kernel
Container tidak membawa OS sendiri. Semua container di satu mesin memakai kernel host yang sama — Docker hanya mengisolasi proses, filesystem, dan network masing-masing container (lewat fitur Linux bernama namespaces dan cgroups; cukup kenal namanya dulu).
Karena tidak ada guest OS yang harus di-boot, container jadi ringan dan cepat: start dalam hitungan detik, dan satu laptop sanggup menjalankan puluhan container sekaligus.
Kenapa developer pakai Docker tiap hari
- Coba software tanpa install — butuh PostgreSQL untuk eksperimen? Satu command, jalan; selesai, hapus tanpa sisa apa pun di sistem kamu.
- Environment konsisten — kode yang sama jalan identik di laptop kamu, laptop teman, CI, dan production.
- Onboarding kilat — anggota tim baru cukup clone repo lalu satu command, bukan setengah hari install dependency.
- Fondasi deployment modern — hampir semua platform cloud dan CI/CD sekarang berbasis container.
Ringkasan
- Masalah yang diselesaikan: "works on my machine" — environment yang beda-beda antar mesin.
- Container = paket berisi app + semua dependency-nya, jalan identik di mana saja.
- Container ≠ VM: container share kernel host (ringan, start dalam detik), VM membawa OS utuh (berat, start dalam menit).
- Docker = platform paling populer untuk membuat & menjalankan container.
Selanjutnya, kita bereskan tiga kata yang paling sering bikin pemula bingung: image, container, dan registry.