Docker Volume dan Presistent Data
Docker Volume dan Presistent Data
1. Volume Docker
Disimpan sebagai bagian dari sistem file host yang dibuat dan dikelola oleh docker, di linux berada di /var/lib/docker/volumes, ketika anda membuat volume, volume ini akan disimpan dalam direktori di docker host, ketika anda melakukan mount volume ke container, direktori tersebut yang di mount di container, sama halnya dengan bind mount hanya saja volumes di manage oleh docker dan terisolasi.
Volumes dapat di mount ke beberapa container secara bersamaan, ketika tidak ada yang menggunakan, volumes akan masih tetap ada dan tidak akan terhapus, untuk membuat volumes anda bisa mengunakan perintah
$ docker volume create namavolume
Contoh penggunaan
$ docker run -d -v namavolume:/srv/app nginx
Untuk melihat semua volumes yang ada, bisa menggunakan perintah dibawah
$ docker volume ls
Volumes sangat cocok jika kita memiliki kebutuhan untuk sharing data pada beberapa container, atau ketika anda ingin menyimpan data kontainer pada remote host atau provider komputasi awan dari pada menyimpannya di lokal, dan juga ketika anda membutuhkan cadangan atau melakukan migrasi data ke docker host lain, anda hanya perlu membuat cadangan volumes yang berada di direktori /var/lib/docker/volumes/nama-volume.
Bind mounts
Bisa disimpan dimana saja pada sistem host, host sistem dan container dapat menulis, membaca dan mengubah file kapanpun. jika dibandingkan dengan volumes bind mounts memiliki fungsional yang terbatas.
Ketika kita menggunakan bind mount file atau direktori pada host di mount ke container, file atau direktori direferensikan secara full path pada host, dan untuk host docker tujuan direktori tidak perlu ada, jika tidak ada akan dibuat secara otomatis.
Untuk penggunaan bind mount gunakan parameter -v atau –volume, contoh penggunaan
$ docker run -d -v /var/www/nothinux.id/public_html:/srv/www ubuntu
Pada perintah diatas /var/www/nothinux.id/public_html merupakan direktori full path yang berada di host yang akan di mount ke /srv/www yang berada di container, seperti yang disebutkan di atas direktori /srv/www ini tidak perlu ada pada docker host, jika tidak ada akan dibuat secara otomatis, dan ketika anda melakukan perubahan di container file/direktori akan berubah juga di host, begitupun sebaliknya
Bisa juga dibuat read only untuk container, agar container tidak bisa mengubah file ataupun direktori dengan menambahkan ro
$ docker run -d -v /var/www/nothinux.id/public_html:/srv/www:ro ubuntu
Bind mounts sangat cocok jika kita ingin melakukan sharing konfigurasi dari host ke container, sebagai contoh kita akan melakukan sharing /etc/resolv.conf dari host ke container, atau jika kita ingin melakukan sharing source code ke environtment development yang berada di container.
tmpfs mount
Hanya disimpan pada memori host tidak pada disk, sangat cocok untuk menyimpan informasi sensitif atau data tidak tetap, untuk menggunakan tmpfs mount anda bisa menggunakan parameter –tmpfs atau –mount.
Contoh penggunaan
$ docker run -d --tmpfs /app nginx:latest
Kita tinggal memilih sesuai yang kita butuhkan.
2. Data Presisten
Secara default, semua file yang dibuat di dalam penampung disimpan di lapisan penampung yang dapat ditulis. Artinya:
- Data tidak bertahan saat penampung itu tidak ada lagi, dan mungkin sulit untuk mengeluarkan data dari penampung jika proses lain membutuhkannya.
- Lapisan penampung yang dapat ditulis terkait erat dengan mesin host tempat penampung berjalan. Anda tidak dapat dengan mudah memindahkan data ke tempat lain.
- Menulis ke dalam lapisan yang dapat ditulis penampung membutuhkan driver penyimpanan untuk mengelola sistem file. Driver penyimpanan menyediakan sistem file gabungan, menggunakan kernel Linux. Abstraksi ekstra ini mengurangi kinerja dibandingkan dengan menggunakan volume data , yang menulis langsung ke sistem file host.
Comments
Post a Comment