# Volume Container: Menjelajahi Penyimpanan Data Persisten

Volume di dalam sebuah container digunakan untuk menyimpan data secara peresiten di luar container. Berbeda dengan lapisan writeable container yang dihapus saat container dimatikan, volume di kelola oleh Docker dan didesain untuk tetap ada meskipun container terkait dihentikan atau dihapus.\
\
Singkatnya, volume pada Docker ibarat folder yang berada di server atau komputer lokal, namun bisa diakses dan dimanfaatkan oleh beberdapa container seacraa bersamaan. Volume membuat pengelolaan data dalam container menjadi lebih mudah dan teroganisir.\
\
Poin menegenai volume:

* **Persistensi data:** Volume dapat digunakan untuk emnyimpan data yang dibuat atau dimodifikasi oleh container, sehingga data tersebut masih akan tersimpan selamat volume tersebut tidak dihapus, ketika container dijalankan lagi maka data yang tersedia di volume bisa diakses oleh container yang berhubungan.
* **Independen dari container**: Volume tidak bergantung pada container tertentu. Volume bisa diakses secara bersamaan oleh beberapa container, shingga berbagi data di antara container pun bisa dilakukan.
* **Dikelola oleh Docker:** Docker menangani pembuatan, pemasangan, dan penglolaan volume. Membuat volume bisa menggunakan perintah `docker volume create` atau Docker akan membuatnya secara otomatis saat dibutuhkan.
* **Fleksibel**: Volume dapat berupa direktori tunggal atau seluruh partisi, untuk menentukan volume yang akan dipasang ke container tertentu menggunakan flag `-v` pada perintah `docker run.`

beberapa cara yang saya temui:

```bash
docker volume create <VOLUME NAME>
docker volume create postgres_data

// check volume
docker volume ls
```

create with docker run

```bash
docker run -d \
  -e POSTGRES_USER=postgres \
  -e POSTGRES_PASSWORD=postgres \
  -e POSTGRES_DB=your_database \
  -v postgres_data:/var/lib/postgresql/data \
  -p 5432:5432 \
  --name postgres \
  --restart 
  bitnami/postgresql:16.3.0
```

Instruksi `-v postgres_data:/var/lib/postgresql/data` dalam perintah `docker run` berfungsi untuk memasang volume Docker. Mari kita bahas rinciannya:

* `-v`: Ini adalah flag pada perintah `docker run` yang digunakan untuk memasang volume.
* `postgres_data`: Ini adalah nama volume Docker yang akan dibuat atau digunakan.
* `/var/lib/postgresql/data`: Ini adalah lokasi direktori di dalam container tempat volume akan dipasang. Direktori ini secara default menyimpan data PostgreSQL.
