Bonjour LinuxFr,
Pour gérer un petit serveur personnel, je suis actuellement en train d'apprendre Docker. Ce n'est absolument pas nécessaire, mais on est geek ou ne l'est pas…
J'ai obtenu des PoC qui fonctionnent, je suis content, et j'en suis à l'étape : "mais comment je sauvegarde ce bordel ???"
Après pas de mal de Google, il y a principalement 2 écoles :
- utiliser des "bind mount" et sauvegarder depuis l'hôte
- utiliser des "volumes", et faire un tar avec une image docker dédiée
De ce que j'ai pu lire sur docker quand j'ai commencé, l'utilisation de "volumes" est recommandée pour des histoires de portabilité, je suis donc parti sur cette solution. Par contre, clairement, faire un "tar" tous les jours de mes données (~150 Go, dont beaucoup de photos), ça ne va pas être possible…
Je suis donc à la recherche d'une solution "moderne" avec des sauvegardes incrémentales/différentielles, de la compression de données, de la déduplication, bref, une solution qui me permette de gérer mes sauvegardes tout en économisant sur mon espace disque.
J'ai trouvé quelques solutions intéressantes à base de Kopia, de borgmatic ou encore de duplicity, mais avant d'aller plus loin, j'aurai aimé un vrai retour d'expérience.
Alors, Cher LinuxFRien, comment sauvegardes tu tes données sous docker ?
# Bind + restic
Posté par Craig77 . Évalué à 4 (+3/-0).
J'utilise des "bind" et je backup avec restic qui gère l'incrémental et le chiffrement. Je ne backup que ce que je ne peux pas reconstruire, les données sous forme de fichier et les configs docker-compose.
Par ailleurs j'utilise automysqlbackup pour faire un dump de mariadb, ce dump étant sauvegardé par restic.
Je vois pas trop ce que les volumes m'apporteraient sur un serveur perso. J'ai essayé un mais j'ai trouvé ça incidentogène. Un ptit
docker compose down
mal avisé et pouf, tout perdu…PS : pour restic, j'utilise resticprofiles. Ça gère les variables d'environnement de façon appropriée et génère les services et timers systemd qui vont bien.
[^] # Re: Bind + restic
Posté par ash . Évalué à 2 (+1/-0).
+1 pour restic
je l'utilise pour backup mes données des conteneurs docker vers un bucket S3 local (garage). Mais ca marche aussi vers un bucket S3 chez scaleway.
Voir ma doc https://www.fredix.xyz/2024/06/garage/
# bind ftw
Posté par Nanawel (site web personnel, Mastodon) . Évalué à 1 (+0/-0).
Franchement, c'est quand même méga pratique pour bien siloter les applications et éviter les inter-incompatibilités.
Ah oui, ça aussi 😁
C'est ma méthode, même si ça reste très artisanal et que je fais ça pour mon compte, je me verrai pas industrialiser le système.
Pour MySQL/MariaDB, je partage en plus un dossier "dump" qui reçoit les dumps que je rsync ensuite ailleurs.
Pour PostgreSQL et SQLite et les autres bases de données, même principe.
Pour les données fichiers (ex : Nextcloud), je fais du Borg-Backup qui gère le diff et la déduplication tout seul.
Puis un Borg Backup pour toutes les configs textes (
docker-compose.yml
et autres).[^] # Re: bind ftw
Posté par _Tof_ . Évalué à 1 (+0/-0).
C'est bien tout mon problème : je ne suis pas encore rendu aux orchestrateurs, mais comment font les admins qui gèrent 15 000 containers ? Comment se passe leur sauvegarde ? J'ai du mal à croire qu'il n'y pas de système 'industrialisé" pour ça aussi.
[^] # Re: bind ftw
Posté par Nanawel (site web personnel, Mastodon) . Évalué à 1 (+0/-0).
Je pense que tu donnes la réponse : quand tu industrialises tu ne fais pas du Docker ou Docker Compose simple, tu passes à K8s ou autre, et là les systèmes de backup sont autrement plus complexes.
[^] # Re: bind ftw
Posté par Psychofox (Mastodon) . Évalué à 2 (+0/-1). Dernière modification le 03 février 2025 à 12:44.
Il y a différentes méthodes selon les types d'applications et le driver de stockage utilisé.
Par exemple sur kubernetes tes containers tournent dans un pod (le même pod que dans podman). Dans ce pod tourne ton container, mais potentiellement d'autres containers qu'on appelle side-car, comme le petite panier à roulette à côté d'une moto. Un cas fréquent de side-car container est d'avoir un outil de backup qui par exemple monte le volume de données pour le copier ailleurs.
Mais il y a aussi de nombreux drivers de stockage kubernetes qui supportent les instantanés. Tu as une liste ici avec les fonctionnalitées supportées:
https://kubernetes-csi.github.io/docs/drivers.html
# Proxmox Backup Server
Posté par lolop (site web personnel) . Évalué à 2 (+0/-0).
Sauf erreur, Proxmox Backup Server a une option pour signaler qu'on a à faire à une image disque. Il gère la dédup bloc, ça limite l'espace occupé
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# easy peasy ?
Posté par NeoX . Évalué à 5 (+2/-0).
le container docker se recréé à partir du dockerfile ou dockercompose -> c'est lui qu'il te fait sauvegarder
tes données sont ensuite prises et stockées de maniere permanente en dehors du conteneur, par un systeme ou un autre (bind ou volume)
il faut donc considerer qu'une bonne sauvegarde sera de sauvegarde le dockerfile ET les données du volume (un espace disque de la machine hote)
[^] # Re: easy peasy ?
Posté par _Tof_ . Évalué à 1 (+0/-0).
Tout à fait d'accord, mais comment ?
[^] # Re: easy peasy ?
Posté par NeoX . Évalué à 3 (+0/-0).
comme n'importe quel dossier.
tu peux faire du rsync vers un autre serveur,
du borg/restic
du snaphost si ton stockage est en LVM ou en ZFS
plein de solution pour sauvegarder des contenus de dossiers plutot que de sauvegarder la VM/le docker en lui meme
[^] # Re: easy peasy ?
Posté par Craig77 . Évalué à 1 (+0/-0).
Je pense que la question du "comment ?" est relative à l'utilisation des volumes.
Pour sauvegarder des volumes, il faudra déployer un container qui expose les données du-dit volume, via rsync, ssh, … ça complique un peu.
À mon avis les volumes c'est bien en environnement cloud, en usage perso, les bindings c'est plus simple. Je n'ai personnellement pas de problème de performance, plutôt des problèmes de gestion des droits d'accès.
[^] # Re: easy peasy ?
Posté par NeoX . Évalué à 3 (+0/-0).
si tu regardes bien, un "volumes" est un dossier dans /var/xxxx/docker/volumes
apres il faut savoir qui est qui.
j'utilise alors les volumes host sous la forme
- /chemin/vers/dossier/hote:/chemin/dans/le/containeur
ainsi mes données sont directement visible depuis l'hote, eventuelement limitée à certains users, et je peux les sauvegarder comme si c'etait juste un dossier de l'hote
autres pistes, ton docker exporte ses données et inclut alors les outils de backup en plus de son "OS"
# Commentaire supprimé
Posté par mussadiqhu345 . Évalué à -4 (+0/-5). Dernière modification le 30 janvier 2025 à 15:23.
Ce commentaire a été supprimé par l’équipe de modération.
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.