
Docker digunakan untuk menyimpan data persisten secara terpisah dari wadah Anda. Data yang disimpan dalam volume tetap dapat diakses setelah penampung Anda berhenti, memungkinkan Anda untuk menampung beban kerja stateful.
Meskipun volume lebih lama dari penampung, perlindungan ini tidak cukup untuk aplikasi produksi. Anda harus mencadangkan volume Anda sehingga Anda dapat memulihkannya setelah bencana. Membuat cadangan volume reguler memastikan Anda dapat memulihkan lingkungan Anda jika host Docker Anda disusupi atau data terhapus secara tidak sengaja.
Mengelola Pencadangan Volume
Docker tidak memiliki mekanisme bawaan untuk mencadangkan volume atau mengekspor kontennya. Anda perlu menyiapkan solusi Anda sendiri untuk mengakses volume dan menyalin datanya ke tujuan pencadangan Anda.
Membuat wadah sementara yang memuat volume yang Anda perlukan untuk mencadangkan biasanya merupakan cara termudah untuk melanjutkan. Tambahkan flag --volumes-from ke perintah docker run untuk secara otomatis memasang volume container yang ada ke container cadangan Anda. Anda kemudian dapat menggunakan alat seperti tar dan gzip untuk menyimpan arsip konten volume ke direktori kerja Anda.
Berikut contoh lengkap teknik ini:
# Buat wadah yang menyimpan data di volume docker "mysql_data" run -d --name mysql -v mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql mysql:8 # Mulai wadah sementara untuk mencadangkan "mysql_data" volume docker run --rm --volumes-from mysql -v $PWD:/backup-dir ubuntu tar cvf /backup-dir/mysql-backup.tar /var/lib/mysql
Bendera --volumes-from berarti wadah cadangan sementara menerima akses ke volume wadah mysql. Direktori /var/lib/mysql di dalam wadah cadangan memaparkan konten volume karena ini adalah jalur yang digunakan oleh wadah mysql. Tarring jalur akan menghasilkan arsip volume Anda yang dapat Anda gunakan sebagai cadangan. Itu disimpan ke direktori kerja Anda karena pengikatan mount yang diatur oleh flag -v.
The --rm flag akan menghapus wadah cadangan segera setelah perintah selesai. Ini meninggalkan arsip di direktori kerja Anda, siap untuk dipindahkan ke penyimpanan jangka panjang. Anda dapat mengotomatiskan pembuatan cadangan dengan menambahkan perintah docker run sebagai tugas cron.
Memulihkan Cadangan Anda
Anda dapat menggunakan teknik serupa untuk memulihkan cadangan Anda. Saat Anda mengganti konten volume yang ada, buat wadah sementara lain dengan volume dan pengikatan ke arsip cadangan Anda. Ekstrak isi arsip ke dalam mount path volume.
$ docker run --rm --volumes-from mysql -v $PWD:/backup-dir bash -c "cd /var/lib/mysql && tar xvf / backup-dir/mysql-backup.tar"
Ini bisa berisiko jika kontainer secara aktif menggunakan volume. Menimpa file yang sedang digunakan dapat menyebabkan kesalahan dan perilaku yang tidak diharapkan. Anda dapat menggunakan perintah docker stop untuk menghentikan sementara container Anda sebelum membawanya kembali dengan docker start.
$ docker stop mysql # Restore the backup # ... $ docker start mysql
Buat volume sebelum Anda memulai container jika Anda memulihkan cadangan ke Host baru:
$ docker volume create new_volume
Kemudian pasang volume ini ke wadah sementara Anda:
docker run --rm -v new_volume:/var/lib/mysql -v $PWD:/backup-dir ubuntu tar cvf /backup-dir/mysql-backup.tar /var/lib/mysql
Memulai wadah aplikasi Anda dengan volume yang sama akan memberikan akses ke file yang telah Anda pulihkan:
docker run -d --name mysql -v new_volume:/var /lib/mysql -e MYSQL_ROOT_PASSWORD=mysql mysql:8
Menguji prosedur ini memungkinkan Anda memeriksa apakah cadangan Anda dapat digunakan jika Anda menghadapi bencana.
Mencadangkan Volume Secara Langsung
Prosedur yang diuraikan di atas adalah cara yang disarankan untuk mencadangkan volume Docker. Namun beberapa situasi bisa lebih baik dilayani dengan langsung menyalin konten dari tempat volume disimpan di sistem file host Anda.
Anda biasanya akan menemukan konten volume Anda di /var/lib/docker/volumes. Setiap volume mendapatkan subdirektori sendiri, seperti /var/lib/docker/volumes/mysql. Dalam jalur tingkat atas ini Anda akan menemukan folder _data yang berisi semua file yang disimpan di dalam volume.
Mengarsipkan direktori /var/lib/docker/volumes dapat menjadi cara mudah untuk mencadangkan semua yang ada di host Anda dengan cepat. Anda harus menggunakan sudo karena semua yang ada di bawah jalur ini dimiliki oleh root.
Mencadangkan volume dengan cara ini tidak disarankan untuk penggunaan biasa karena tidak portabel di seluruh instalasi. Sistem driver volume Docker berarti data volume tidak perlu disimpan di sistem file host Anda – bisa di jaringan berbagi atau lokasi jarak jauh lainnya. Teknik ini hanya boleh dicoba bila Anda menginginkan pencadangan cepat sebelum menjalankan pemeliharaan pada mesin tertentu.
Docker perlu ditangani dengan hati-hati karena berisi data persisten aplikasi Anda. Membuat cadangan reguler akan melindungi Anda dari kehilangan data jika host Anda disusupi atau proses penampung yang salah menghapus file secara tidak sengaja.
Meskipun Anda dapat membuat cadangan dengan mengarsipkan direktori instalasi Docker, hal ini harus dihindari sedapat mungkin. Wadah cadangan sementara mungkin tampak rumit tetapi dapat dengan mudah dituliskan dan memberikan hasil yang dapat diprediksi di seluruh driver volume.
Setelah Anda membuat arsip cadangan volume, ingatlah untuk mengunggahnya ke penyimpanan jarak jauh sesegera mungkin. Cadangan yang disimpan di mesin asalnya tidak akan membantu jika Anda kehilangan akses atau terjadi kegagalan perangkat keras.
Disadur dari HowToGeek.com.