Belajar tentang Docker Volume: mulai dari pengertian, prinsip kerja, perintah dasar, hingga studi kasus nyata menggunakan Nginx. Panduan lengkap ini cocok untuk pemula yang ingin memahami cara menyimpan data persisten di Docker.
Halo, Kawan Belajar!
Salah satu tantangan utama saat menggunakan docker container adalah bagaimana menyimpan data secara persisten. Karena sifat docker container yang ephemeral (sementara), data yang disimpan langsung di dalam docker container akan hilang saat container dihapus atau dibuat ulang.
Di sinilah Docker Volume hadir sebagai solusi. Dengan Docker Volume, kita bisa menyimpan data secara aman, persisten, dan mudah diatur.
Pada artikel kali ini, kita akan membahas pengertian Docker Volume, cara kerjanya, perintah dasar untuk mengelolanya, hingga studi kasus real penggunaannya.
Simak sampai tuntas ya!
Docker Volume adalah mekanisme penyimpanan data yang dikelola oleh Docker untuk menyimpan file dan data secara persisten di luar container.
Ketika container dihapus atau dibuat ulang, data yang disimpan di volume tetap aman karena volumenya tidak ikut terhapus (kecuali dihapus manual).
Persistent Storage
Data tetap tersimpan meskipun container dihentikan atau dihapus.
Container Sharing
Satu volume bisa digunakan oleh beberapa container sekaligus.
Decoupling
Volume dipisahkan dari lifecycle container. Artinya, container bisa diganti atau di-redeploy tanpa kehilangan data.
Optimized for Docker
Volume dikelola langsung oleh Docker, lebih stabil dibandingkan hanya menggunakan bind mount ke host.
Secara sederhana, Docker Volume bekerja dengan memisahkan data dari lifecycle container. Artinya:
Dengan cara ini, meskipun container dihapus, data tetap aman karena hidup di luar container. Container baru yang menggunakan volume sama akan tetap bisa mengakses data tersebut.
Selain menggunakan Docker Volume, ada juga opsi lain yaitu Bind Mounts. Berikut tabel perbandingannya:
| Aspek | Docker Volume | Bind Mount |
|---|---|---|
| Rekomendasi | Metode utama dan direkomendasikan untuk menyimpan data container. | Sudah ada sejak awal Docker, tapi relatif kurang fleksibel dibanding volume. |
| Interaksi | Bisa dikelola menggunakan Docker CLI maupun API. | Tidak bisa diatur lewat CLI, hanya bisa diakses langsung dari host system. |
| Kemudahan Mounting | Cukup menggunakan nama volume saat mount ke container. | Harus menentukan path lengkap folder di host. |
| Lokasi Penyimpanan | Disimpan di path khusus Docker (/var/lib/docker/volumes/). |
Bisa berada di lokasi mana saja di host. |
| Use Case Utama | Cocok untuk persistent storage production karena lebih aman dan portable. | Cocok untuk development, misalnya sinkronisasi file antara host dan container. |
Singkatnya, bind mounts adalah metode untuk memasang (mounting) file atau folder dari host ke dalam container dengan menggunakan absolute path, yaitu alamat lengkap file atau folder di host. Sementara volume dikelola penuh oleh Docker dengan membuat direktori khusus di storage Docker, sehingga lebih aman dan portable.
Setelah memahami konsep dasar Docker Volume, langkah berikutnya adalah mempelajari perintah-perintah dasar yang sering digunakan dalam pengelolaannya.
Dengan perintah ini, kamu bisa membuat volume baru, mengecek daftar volume yang ada, melihat detail informasi volume, hingga menghapus volume yang sudah tidak terpakai.
Bagian ini sangat penting, terutama bagi pemula, agar terbiasa berinteraksi dengan Docker melalui terminal dan memahami bagaimana data dapat disimpan secara persisten menggunakan volume.
Sebelum menjalankan perintah dasar Docker Volume, pastikan hal berikut sudah terpenuhi:
Catatan:
Jika kamu belum menginstal Docker, silakan baca panduan berikut:
👉 Cara Melakukan Instalasi Docker pada Sistem Operasi LinuxJika kamu membutuhkan VPS yang handal untuk mencoba maupun menjalankan Docker di lingkungan cloud, CloudKilat menyediakan layanan Kilat VM 2.0, baca fitur dan keunggulannya disini:
👉 Mengenal Fitur dan Keunggulan Layanan Kilat VM 2.0
Dalam panduan ini, berikut detail versi dari sistem operasi dan aplikasi yang digunakan:
Berikut adalah perintah dasar yang sering digunakan dalam mengelola Docker Volume:
docker volume create nama_volume
Contoh Penggunaan:
Penjelasan:
Perintah diatas akan membuat volume baru dengan nama yang kamu tentukan misalnya my_data. Volume tersebut bisa digunakan oleh container untuk menyimpan data secara persisten.
docker volume ls
Contoh Penggunaan:
Penjelasan:
Perintah ini digunakan untuk menampilkan semua volume yang ada di sistem. Biasanya berguna untuk mengecek volume sebelum digunakan atau dihapus.
docker volume inspect <nama_volume>
Contoh Penggunaan:
Penjelasan:
Perintah ini menampilkan detail informasi dari sebuah volume, seperti lokasi di host, driver yang digunakan, dan container yang sedang memakai volume tersebut.
Bagian penting yang perlu diperhatikan:
/var/lib/docker/volumes/my_data/_data.Jadi kalau nanti ada container yang pakai volume my_data, sebenarnya semua file-nya akan disimpan di folder _data tersebut. Kamu bisa cek langsung ke host (misalnya dengan ls -lah /var/lib/docker/volumes/my_data/_data) untuk melihat isi filenya.
docker volume rm <nama_volume>
Contoh Penggunaan:
Penjelasan:
Digunakan untuk menghapus volume tertentu. Pastikan volume tidak sedang digunakan oleh container, kalau masih dipakai maka perintah ini akan gagal.
docker volume prune
Contoh Penggunaan:
Penjelasan:
Perintah ini akan menghapus semua volume yang sudah tidak digunakan oleh container manapun. Berguna untuk membersihkan storage agar tidak penuh oleh volume sisa.
docker run -d --name <nama_container> -v <nama_volume>:/path/di/container <nama_image>:<tag>
Contoh Penggunaan:
Penjelasan:
Perintah di atas akan menjalankan container Nginx dengan nama some-nginx dan menghubungkan volume bernama my_site ke dalam direktori /etc/nginx/conf.d di dalam container.
Saat volume my_site baru pertama kali dibuat, Docker akan otomatis menyalin file bawaan dari direktori /etc/nginx/conf.d/ di dalam container (termasuk default.conf) ke dalam volume.
Artinya, jika kamu cek isi volume di host pada path /var/lib/docker/volumes/my_site/_data maka akan terlihat file default.conf bawaan Nginx.
Dengan mekanisme ini, kamu bisa mengubah konfigurasi Nginx langsung dari host (misalnya edit default.conf di dalam volume), lalu cukup me-restart container untuk menerapkan perubahan, tanpa perlu rebuild image.
Pada studi kasus pertama ini, kita akan menggunakan volume untuk menyimpan file HTML agar tidak hilang meski container NGINX dihapus.
docker volume create webdata
docker run -d --name web1 \
-p 8080:80 \
--mount source=webdata,target=/usr/share/nginx/html \
nginx:latest
Tambahkan file index.html ke dalam volume (lokasi default di host: /var/lib/docker/volumes/webdata/_data/):
echo "<h1>Halo dari Docker Volume</h1>" > /var/lib/docker/volumes/webdata/_data/index.html
Buka browser, dan akses website Anda pada http://<ip_vps>:8080 dan pastikan muncul teks Halo dari Docker Volume.
Stop dan hapus container yang sudah dibuat sebelumnya:
docker stop web1
docker rm web1
Buat ulang container NGINX dengan volume yang sama:
docker run -d --name web2 \
-p 8080:80 \
--mount source=webdata,target=/usr/share/nginx/html \
nginx:latest
Buka browser, akses website kamu pada http://<ip_vps>:8000.
Hasilnya, file HTML yang sudah dibuat sebelumnya tetap ada dan tampil di browser, meskipun container lama sudah dihapus.
Dari pembahasan di atas, kita bisa simpulkan bahwa Docker Volume adalah solusi terbaik untuk menyimpan data secara persisten di dalam ekosistem Docker. Dengan volume, kamu bisa:
Melalui studi kasus Nginx dan file HTML sederhana tadi, terbukti bahwa data tetap tersimpan meskipun container dimatikan atau dihapus. Ini sangat penting, terutama jika kamu menggunakan Docker di production environment, misalnya untuk menyimpan konfigurasi, database, maupun file statis aplikasi.
Dengan memahami dan memanfaatkan Docker Volume, kamu akan lebih percaya diri dalam mengelola aplikasi berbasis container, tanpa khawatir kehilangan data.
Jangan ragu untuk menghubungi tim support kami jika Anda memiliki pertanyaan atau masalah terkait layanan CloudKilat.