Taufik Mulyana
Taufik Mulyana
Linux System Administrator, Interested in Linux, Cloud, Containers
December 1, 2018 4 min read

Mengelola Data di Docker

Mengelola Data di Docker, secara default semua file yang dibuat dalam container tidak akan tersimpan secara persistent, ketika container dihentikan file akan hilang, dan ketika anda menjalakan kembali container tersebut akan kembali ke sedia kala.

untuk menangani hal ini docker memiliki 2 opsi yaitu volumes dan bind mounts yang dapat diterapkan pada container untuk menyimpan data pada host, sehingga file akan tersimpan secara persistent ketika container dihentikan, dan jika anda menjalankan docker di linux anda juga bisa menggunakan tmpfs mount

Volumes

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 anda 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 anda 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 anda ingin melakukan sharing konfigurasi dari host ke container, sebagai contoh anda akan melakukan sharing /etc/resolv.conf dari host ke container, atau jika anda 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

anda tinggal memilih sesuai yang anda butuhkan.

Leave a Reply

Your email address will not be published. Required fields are marked *