Docker Volume

Volume adalah cara untuk persistensi data di luar container. Data yang disimpan dalam volume tidak akan hilang saat container dihapus atau di-restart. Ini sangat berguna untuk menyimpan data seperti database, file konfigurasi, atau hasil build.

Cara kerja volume:

  1. Pembuatan volume: Saat Anda mendefinisikan volume dalam file docker-compose.yml, Docker akan membuat volume dengan nama yang diberikan.

  2. Pemasangan volume: Volume kemudian di-mount ke direktori tertentu di dalam container.

  3. Persistensi data: Data yang ditulis ke direktori yang di-mount akan disimpan di volume.

Cara Mendefinisikan Volume dalam Docker Compose

Anda dapat mendefinisikan volume dalam file docker-compose.yml dengan cara sebagai berikut:

version: '3.7'

services:
  web:
    build: .
    volumes:
      - my_volume:/var/www/html

volumes:
  my_volume:

Penjelasan:

  • volumes di bawah services: Menentukan volume mana yang akan di-mount ke container.

  • my_volume:/var/www/html: Mendefinisikan bahwa volume my_volume akan di-mount ke direktori /var/www/html di dalam container web.

  • volumes di level atas: Mendefinisikan volume secara global.

Cara Kerja Volume

  1. Pembuatan Volume: Saat Anda menjalankan docker-compose up, Docker akan membuat volume dengan nama yang Anda tentukan (dalam contoh ini, my_volume).

  2. Pemasangan Volume: Volume kemudian di-mount ke direktori yang ditentukan dalam layanan.

  3. Persistensi Data: Setiap perubahan yang Anda buat pada data di dalam direktori yang di-mount akan disimpan dalam volume.

Jenis-Jenis Volume

  • Named Volumes: Volume yang didefinisikan dengan nama dan dikelola oleh Docker.

  • Anonymous Volumes: Volume yang dibuat secara otomatis tanpa nama yang spesifik.

  • Bind Mounts: Mem-mount direktori dari host ke container. Tidak disarankan untuk produksi karena ketergantungan pada struktur direktori host.

Contoh Penggunaan Volume

  • Database: Simpan data database PostgreSQL dalam volume untuk persistensi.

  • File Konfigurasi: Simpan file konfigurasi aplikasi dalam volume untuk memudahkan pengelolaan.

  • Hasil Build: Simpan hasil build aplikasi dalam volume untuk digunakan oleh layanan lain.

Keuntungan Menggunakan Volume

  • Fleksibel: Mudah untuk menambahkan, menghapus, atau mengubah volume.

  • Scalable: Volume dapat di-mount ke banyak container.

  • Backup dan Restore: Mudah untuk membuat backup dan restore data dalam volume.

Best Practices untuk Menggunakan Volume

  • Gunakan Named Volumes: Lebih mudah dikelola dan di-backup.

  • Hindari Bind Mounts: Kecuali untuk keperluan pengembangan.

  • Pertimbangkan Ukuran Volume: Jangan membuat volume terlalu besar untuk menghindari pemborosan ruang.

  • Gunakan Label untuk Organisasi: Berikan label pada volume untuk memudahkan pencarian.

Last updated