Persistensi Data: Volumes vs Bind Mounts
Secara default, lapisan penyimpanan kontainer bersifat **Ephemeral** (sementara). Jika kontainer dihapus (docker rm), semua data baru yang dibuat di dalam kontainer akan HILANG SELAMANYA!
Untuk menyimpan data permanen (seperti database MySQL, file upload user, atau log), Docker menyediakan 2 mekanisme utama:
1. Named Volumes (Dikelola oleh Docker)
Volume disimpan dan dikelola sepenuhnya oleh Docker Engine di lokasi khusus host (/var/lib/docker/volumes/). Ini adalah standar terbaik untuk produksi & database.
# Membuat volume baru
docker volume create pg_data
# Menghubungkan volume ke kontainer (-v nama_volume:path_di_kontainer)
docker run -d --name db-utama -v pg_data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=secret postgres:alpine
2. Bind Mounts (Menghubungkan Folder Host Langsung)
Memetakan file/folder spesifik di komputer Anda langsung ke dalam kontainer. Sangat cocok untuk **Development Workflow** (Live Reloading kode).
# Memetakan folder project lokal ke kontainer
docker run -d -p 80:80 -v $(pwd)/html:/usr/share/nginx/html nginx:alpine
Tabel Perbandingan Ringkas:
- Named Volume: Lebih aman, diatur Docker, portabel antar OS.
- Bind Mount: Tergantung struktur folder host, bagus untuk edit kode lokal.