Bonnes pratiques pour sauvegarder les volumes docker

Bonjour à tous,

Mon projet de CHATONS avance tout doucement, je suis encore à la phase d’étude et de test, je prends le temps de faire les choses correctement.

Voulant proposer une infrastructure à taille humaine, j’ai recentré mes outils pour plus de simplicité. J’ai laissé tombé swarm, pour me concentrer sur des conteneurs docker gérés avec compose. Tout fonctionne bien, j’envisage d’élargir les tests avec mes voisins.

Ma question se porte sur les sauvegardes des volumes persistants de docker. Plusieurs services que je leurs proposent (Nextcloud, Pixelfed, Bitwarden etc … ) nécessitent des volumes persistants et l’utilisation de base de données, mariadb et postgres. A l’heure actuelle mes sauvegardes consistent à arrêter les conteneurs puis une compression avec tar du dossier des volumes ensuite rsync qui envoie le fichier sur un serveur externe et pour finir un script qui supprime les sauvegardes vieilles de 7 jours ou plus. Je me demande s’il y a pas plus « propre » comme système de sauvegarde. Quelle méthode utilisez-vous pour sauvegarder vos volumes docker svp ?

Hello,

Je suis une pratique décrite dans la documentation de docker qui consiste à utiliser un container de backup qui va monter les volumes à backup. Ca permet de ne pas arrêter les containers, tout en s’assurant de leur intégrité.

J’ai mis en place ma propre solution, mais il y a quelques outils « clé en main » qui existent :

Attention aux base de données, il ne faut pas backup directement le volume sinon tu risques d’avoir des problèmes d’intégrité, par contre tu peux faire ce genre de chose :
$ docker exec some-mariadb sh -c 'exec mysqldump --all-databases -uroot -p"$MARIADB_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql

Hello,

Merci pour ces précisions, cela me donne déjà une base de travail.

Bonne journée.

De notre côté on utilise duplicity en docker lancé par une tâche cron, qui monte les volumes, se connecte à la bdd pour en faire un dump puis pousse les backups chiffrés par GPG vers du cloud storage.

Par exemple le docker-compose pour les backups nextcloud : templates/backup.yaml.j2 · master · Le Filament / Ansible Roles / docker_nextcloud · GitLab

Merci pour votre retour. Y a plus qu’à :wink: