“Kok dataku hilang pas container dimatikan?!”
– Seorang developer yang baru kenal Docker, episode kesekian
Kalau kamu sering pakai Docker, pasti pernah mengalami kejadian "kok data tiba-tiba hilang?" setiap kali container dihentikan atau dihapus. Jangan panik! Ini bukan karena komputer kamu kerasukan, tapi karena Docker container bersifat ephemeral alias sementara.
Jadi, bagaimana cara menyimpan data agar tetap aman walaupun container dihentikan?
Jawabannya: Docker Volumes!
Di artikel ini, kita akan belajar:
Apa itu Docker Volume dan kenapa penting?
Cara membuat, menggunakan, dan menghapus volume di Docker
Perbedaan volume dengan bind mount
Tips & trik supaya data tidak hilang!
Langsung aja kita mulai!
1. Apa Itu Docker Volume dan Kenapa Penting?
Docker volume adalah cara paling direkomendasikan untuk menyimpan data dalam Docker.
Kenapa? Karena:
Data tetap ada meskipun container dihentikan atau dihapus.
Lebih aman & fleksibel dibanding bind mount.
Dikelola oleh Docker, jadi lebih optimal dan mudah digunakan.
Contohnya, kalau kamu pakai database seperti MySQL dalam Docker, semua data akan disimpan di dalam volume, sehingga aman walaupun container dihapus.
Tanpa volume: Data hilang saat container dihapus
Dengan volume: Data tetap aman walau container dihapus
2. Cara Membuat dan Menggunakan Docker Volume
A. Membuat Volume Baru
Sebelum digunakan, kita bisa membuat volume dengan perintah berikut:
docker volume create my_volume
Selamat! Kamu baru saja membuat volume pertama kamu.
B. Menjalankan Container dengan Volume
Sekarang, kita gunakan volume ini di dalam container.
Contoh: Menjalankan MySQL dengan volume
docker run -d -p 3306:3306 \
-v my_volume:/var/lib/mysql \
--name mysql-container mysql:latest
Penjelasan:
-v my_volume:/var/lib/mysql
→ Menghubungkan volumemy_volume
ke folder/var/lib/mysql
di dalam container.- Semua data MySQL akan disimpan di my_volume, jadi aman walaupun container dihapus!
C. Melihat Daftar Volume yang Ada
Kita bisa mengecek semua volume yang telah dibuat dengan:
docker volume ls
Hasilnya mungkin seperti ini:
DRIVER VOLUME NAME
local my_volume
local another_volume
Artinya: Semua volume ini tersimpan dengan aman!
D. Melihat Detail Volume
Kalau mau lihat detail dari sebuah volume:
docker volume inspect my_volume
Hasilnya bisa seperti ini:
[
{
"Name": "my_volume",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/my_volume/_data",
"CreatedAt": "2025-02-01T12:34:56Z",
"Labels": {},
"Scope": "local"
}
]
Artinya:
- Volume
my_volume
tersimpan di/var/lib/docker/volumes/my_volume/_data
di dalam sistem host. - Semua data yang disimpan di volume ini tidak akan hilang walaupun container dihapus!
E. Menghapus Volume
Kalau volume sudah tidak diperlukan, kita bisa menghapusnya dengan:
docker volume rm my_volume
Hati-hati!
Volume yang sudah dihapus tidak bisa dikembalikan! Pastikan kamu tidak menghapus data penting!
F. Menghapus Semua Volume yang Tidak Digunakan
Kalau banyak volume yang sudah tidak terpakai, bisa dihapus sekaligus dengan:
docker volume prune
Konfirmasi akan muncul seperti ini:
WARNING! This will remove all unused volumes. Are you sure you want to continue? [y/N]
Ketik y, lalu tekan Enter untuk membersihkan semua volume yang tidak digunakan.
3. Perbedaan Docker Volume vs Bind Mount
Fitur | Docker Volume | Bind Mount |
---|---|---|
Dikelola oleh Docker? | ✔️ Iya | ❌ Tidak |
Portabilitas | ✔️ Bisa digunakan di berbagai container | ❌ Terkait ke path di host |
Keamanan | ✔️ Lebih aman karena terisolasi | ❌ Bisa mengakses semua file host |
Performa | ✔️ Lebih optimal di Docker | ❌ Tergantung pada sistem file host |
Cocok untuk? | Data aplikasi seperti database | Mengakses file langsung dari host |
Kesimpulan:
- Gunakan Docker Volume untuk penyimpanan jangka panjang dan aman.
- Gunakan Bind Mount jika perlu akses langsung ke file dari sistem host.
4. Troubleshooting: Masalah Umum dengan Docker Volume
Kasus 1: Volume Tidak Bisa Diakses dari Container
Error:
Permission denied when accessing volume
Solusi:
- Pastikan container dijalankan dengan user yang punya akses ke volume.
- Coba jalankan container dengan flag
--user $(id -u):$(id -g)
.
Kasus 2: Data Hilang Setelah Restart Container
Error:
Data is missing after restarting container
Solusi:
- Pastikan kamu menggunakan volume, bukan menyimpan data di dalam container saja.
- Gunakan perintah
docker volume ls
untuk melihat daftar volume yang ada.
5. Kesimpulan: Jangan Biarkan Data Hilang Lagi!
Intinya:
Docker volume adalah cara terbaik untuk menyimpan data dalam container.
Gunakan docker volume create
untuk membuat volume baru.
Gunakan docker run -v volume_name:/path_dalam_container
untuk menggunakan volume.
Gunakan docker volume prune
untuk membersihkan volume yang tidak terpakai.
Dengan memahami cara membuat dan mengelola Docker volumes, kamu bisa menghindari kehilangan data yang bikin stres dan memastikan aplikasi berjalan lancar.
0 Comments