Docker volume adalah penyimpanan/menyimpan data diluar dari container docker, agar data yang berada didalam container dapat dibackup dan tidak hilang saat docker container dibuat ulang.

Docker volume adalah methode yang paling sering digunakan untuk melakukan penyimpanan secara permanent untuk data container dan services. Karena saat docker dijalankan ulang maka docker akan menambahkan mounts volume di filesystem containernya.

Jika kamu menggunakan Docker untuk deployment, maka kamu akan sangat familiar dengan perintah -v atau --volume, perintah tersebut digunakan untuk melakukan mount dari local file ke container.

Contoh penggunaan mount saat menggunakan docker cli run

echo "<h1>Hello from Host</h1>" > ./target/index.html

membuat sebuah file yang akan kita mount kedalama container

docker run -it --rm --name nginx -p 8080:80 -v "$(pwd)"/target:/usr/share/nginx/html nginx

Lalu buka browser lalu arahkan ke url http://localhost:8080/ maka kamu akan meluhan tulisan “Hello From Host”

Metode ini disebut bind mount dan ini biasa yang digunakan oleh para developer. Tetapi jika kalian menggunakan Docker Desktop Windows or MacOS mount memeliki performa issue.

Volume biasanya di simpan di /var/lib/docker/volumes atau kita bisa mengarahkan ke direktori lainnya.

Membuat dan Mengatur Docker Volume

Cara yang paling mudah untuk membuat dan menggunakan volume dengan docker run dan menambahkan flag -v atau --volume. Flag ini memiliki 3 argument yang dipisahkan denga tanda :, berikut contohnya.

-v <source>:<destination>:<options>

Docker akan melakukan mount terhadap source tersebut. Berikut contoh melkakukan docker run dengan volume.

docker run -it --rm --name nginx -p 8080:80 -v demo-dolan:/usr/share/nginx/html nginx

Untuk mengecek apakah volume sudah terbuat atau belum, kita dapat mengecek menggunakan perintah docker volume ls

docker volume

Kamu bisa melakukan pengecekan volume yang sudah dibuat di folder linux kita.

ls /var/lib/docker/volumes/demo-dolan

Volume dapat di declare didalam Dockerfile menggunakan VOLUME statement. Dengan statement ini docker akan membuat anonymous volume dan mount ke spesifik direktori.

Setelah kita menggunakan volume dengan docker run. kita akan mencoba menggunakan volume pada docker-compose.

Untuk docker-compose menggunakan volume secara presisten maka kita harus membuat terlebih dahulu dihost kita.

mkdir -p /home/dolanawan/demo-dolan

Setelah membuat folder kita buat sebuah docker-compose

version: "3"
services:
  web:
    image: nginx:latest
    container_name: dolan_web
    ports:
      - 8080:80
    volumes:
      - ./demo-dolan:/usr/share/nginx/html

Buat sebuah file index.html didalam folder demo-dolan dan berikan sebuah tulisan Hello From Volume. Setelah itu jalankan docker-compose up -d

Lalu kita bisa mencoba lihat hasilnya dengan melakukan curl localhost:8080

Maka akan tetampil tulisan Hello From Volume. Untuk memastikan apakah volume sudah terbuat dengan benar bisa menjalankan perintah docker volume ls

Sampe disini aja tutorial docker volume, kalo ada yang kurang jelas bisa kalian tanyakan di kolom komentar ya