Di dalam artikel ini, saya akan menjelaskan cara menggabungkan volume persisten di dalam Docker container, agar aplikasi stateful seperti MariaDB, MySQL, dll. dapat berjalan dengan maksimal.
APA ITU APLIKASI STATEFUL?
Suatu model aplikasi yang menggunakan penyimpanan (seperti session, dsb), yang berarti setiap kegiatan yang dilakukan akan diingat/disimpan, dan akan berpengaruh pada kegiatan yang akan dilakukan selanjutnya.
Cara kerja stateful aplikasi adalah menyimpan data anda diserver, seperti username dan password, lalu menggunakannya untuk terhubung kepada client. Stateful application akan memberikan respon sesuai dengan permintaan client sampai client tersebut logout. Jadi stateful application merupakan aplikasi dependen (tidak independen), yaitu respon yang diberikan server tergantung kepada aksi user /client
Contoh mudahnya : Google Drive, Gmail, dll. Yang dimaksudkan adalah, ketika diminta untuk login terlebih dahulu agar dapat mengakses data kita.
KENAPA MENGGUNAKAN VOLUME PERSISTEN?
Pada dasarnya, container tidaklah abadi (bisa error, corrupt, dll) dan memiliki file system sendiri. Ketika container ini hilang/dihapus maka data yang tersimpan di dalam-nya juga ikut hilang/terhapus. Sama hal-nya dengan aplikasi stateful seperti MariaDB dan lain-lain, data mereka akan ikut hilang apabila container-nya terhapus/error/corrupt.
Karena data-data kita ini penting, pastilah kita tidak ingin data kita hilang
APA ITU VOLUME PERSISTEN?
Sebuah volume penyimpanan persisten dapat mempertahankan keberadaannya, meskipun container-nya mengalami kerusakan. Volume penyimpanan yang persisten ini dapat dibuat dalam disk yang dipasang ke Mesin Host secara langsung atau dapat dibuat dalam perangkat penyimpanan NAS di jaringan LAN yang dipasang sebagai perangkat penyimpanan jaringan pada Mesin Host atau bahkan dapat dibuat dalam penyimpanan cloud yang dipasang sebagai perangkat penyimpanan di Mesin Host.
ADA DUA METODE :
Ada 2 metode untuk memasang volume penyimpanan persisten pada container.
Metode #1
Anda dapat membuat volume penyimpanan persisten yang baru di dalam Mesin Host dan memasangnya pada direktori atau folder di dalam container. Tenang saja, container dapat meng-akse volume penyimpanannya. Tenang saja, data-nya tidak akan mudah dibaca, dimanipulasi ataupun dirusak dari Mesin Host.
1. Buat volume penyimpanan-nya
docker volume create mariadb-data
2. Cek volume yang sudah dibuat
docker volume ls
3. Kemudian lakukan inspeksi pada volume penyimpanan-nya untuk melihat detail informasi-nya
docker inspect mariadb-data
4. Sekarang, buat container nya dengan meng-ikutsertakan volume penyimpanan yg sudah dibuat tadi
docker run --name daniel-mariadb -v mariadb-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mypasswd -d mariadb
5. Sekarang, masuk ke bash shell dari container MariaDB
docker exec -it daniel-mariadb /bin/bash
6. Kemudian, cek isinya.
ls /var/lib/mysql
Sekarang, cek volume penyimpanan melalui mesin host
ls /var/lib/docker/volumes/mariadb-data/_data
7. Sekarang, kita coba hapus container MariaDB dan memastikan bahwa volume penyimpanan-nya masih ada di mesin host
-Hentikan jalannya container
docker container stop daniel-mariadb
-Hapus containernya
docker rm daniel-mariadb
8. Sekarang, cek lagi dan pastikan bahwa datanya masih ada
ls /var/lib/docker/volumes/mariadb-data/_data
9. Buatlah container MariaDB lagi dan gunakan direktori yang sama
docker run --name daniel-mariadb -v mariadb-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mypasswd -d mariadb
10. Sekarang, cek dan konfirmasi bahwa data yang dipakai container MariaDB yang baru adalah bekas dari container yang tadi (lihat waktu pembuatan-nya juga)
ls -l /var/lib/docker/volumes/mariadb-data/_data
1. Buat volume penyimpanan-nya
docker volume create mariadb-data
2. Cek volume yang sudah dibuat
docker volume ls
3. Kemudian lakukan inspeksi pada volume penyimpanan-nya untuk melihat detail informasi-nya
docker inspect mariadb-data
4. Sekarang, buat container nya dengan meng-ikutsertakan volume penyimpanan yg sudah dibuat tadi
docker run --name daniel-mariadb -v mariadb-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mypasswd -d mariadb
5. Sekarang, masuk ke bash shell dari container MariaDB
docker exec -it daniel-mariadb /bin/bash
6. Kemudian, cek isinya.
ls /var/lib/mysql
Sekarang, cek volume penyimpanan melalui mesin host
ls /var/lib/docker/volumes/mariadb-data/_data
7. Sekarang, kita coba hapus container MariaDB dan memastikan bahwa volume penyimpanan-nya masih ada di mesin host
-Hentikan jalannya container
docker container stop daniel-mariadb
-Hapus containernya
docker rm daniel-mariadb
8. Sekarang, cek lagi dan pastikan bahwa datanya masih ada
ls /var/lib/docker/volumes/mariadb-data/_data
9. Buatlah container MariaDB lagi dan gunakan direktori yang sama
docker run --name daniel-mariadb -v mariadb-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mypasswd -d mariadb
10. Sekarang, cek dan konfirmasi bahwa data yang dipakai container MariaDB yang baru adalah bekas dari container yang tadi (lihat waktu pembuatan-nya juga)
ls -l /var/lib/docker/volumes/mariadb-data/_data
Metode #2
Anda dapat memasukkan direktori lokal dari mesin host sebagai volume penyimpanan persisten, sehingga data dapat dibagikan di antara mesin host dan container. Metode ini sangat berguna jika mesin host ingin mengakses atau secara berkala membuat cadangan data atau database yang ditulis ke folder oleh server DB yang berjalan di dalam Docker Container.
1. Pertama, buat dulu direktori di mesin host
mkdir mariadb-data-dir
2. Buat container-nya dan masukkan direktori yang sudah kita buat barusan dengan direktori yang sama
docker run --name daniel-mariadb -v /home/nama_user_anda/mariadb-data-dir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mypasswd -d mariadb
3. Cek bahwa datanya ada di dalam direktori tersebut
ls /home/nama_user_anda/mariadb-data-dir
Sekian tutorial dari saya, selamat mencoba😁
docker run --name daniel-mariadb -v /home/nama_user_anda/mariadb-data-dir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mypasswd -d mariadb
3. Cek bahwa datanya ada di dalam direktori tersebut
ls /home/nama_user_anda/mariadb-data-dir
Sekian tutorial dari saya, selamat mencoba😁
Komentar
Posting Komentar