Apa itu Docker — DevOps

"It works on my machine" — kalimat klasik yang setiap dev pernah ucapkan. Kode jalan di laptop kamu, tapi pas dideploy ke server: error. Beda Node version…

"It works on my machine" — kalimat klasik yang setiap dev pernah ucapkan. Kode jalan di laptop kamu, tapi pas dideploy ke server: error. Beda Node version, beda library version, beda OS, beda env variable. **Docker** = solusi yang ngebungkus aplikasi + semua dependencies-nya jadi satu paket (container) yang bisa jalan identical di mana saja: laptop dev, CI server, production cloud. Sekarang jadi standar industri DevOps.

💡 Docker mengubah dunia DevOps 2013. Sebelum Docker: "deployment" = SSH ke server, install dependencies manual, copy file, restart service. Setelah Docker: `docker run` = aplikasi siap jalan. Speed deployment naik 10x, "deployment failure" turun drastis.

Masalah yang Diselesaikan Docker

"It works on my machine" — ini masalah klasik saat kode berjalan di laptop developer tapi error di server. Docker menyelesaikan ini dengan membungkus aplikasi beserta semua dependensinya ke dalam container.

Container vs Virtual Machine

Virtual Machine:              Container (Docker):
┌──────────────┐              ┌──────────────┐
│   App A      │              │   App A      │
│   Libs       │              │   Libs       │
│   Guest OS   │              └──────────────┘
│   Hypervisor │              ┌──────────────┐
│   Host OS    │              │   App B      │
│   Hardware   │              │   Libs       │
└──────────────┘              └──────────────┘
                              │ Docker Engine │
                              │   Host OS    │
                              │   Hardware   │
                              └──────────────┘
Container lebih ringan karena berbagi kernel Host OS

Konsep Utama Docker

Command Dasar Docker

# Pull image dari registry
docker pull node:20-alpine

# Jalankan container
docker run -d -p 3000:3000 --name my-app node:20-alpine

# Lihat container yang berjalan
docker ps
docker ps -a    # termasuk yang stopped

# Stop & remove
docker stop my-app
docker rm my-app

# Lihat logs
docker logs my-app -f

🎭 Analogi sehari-hari

Sebelum Docker = kirim makanan ke kafe lain dengan resep tertulis. Kafe tujuan punya kompor beda, panci beda, bahan beda — hasilnya sering gak konsisten ("kok rasanya beda?"). Docker = kirim makanan dalam wadah hermetic + dapur portable — kompor, panci, bahan, semua di dalam satu paket. Buka di kafe manapun, hasilnya identik.

⚠️ Jebakan yang sering ditemui

TL;DR: Docker = container yang ngebungkus aplikasi + semua dependencies jadi paket portable yang jalan identical di mana saja. Solve "works on my machine" problem. Container vs VM: container share kernel host (lebih ringan). Konsep: image (blueprint), container (running instance), Dockerfile (instruksi build), registry (Docker Hub). Standar industri DevOps. Foundation Kubernetes + cloud deployment modern.

Yang akan kamu pelajari