NAS Synology : comment sauvegarder et restaurer un container Docker ?
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à sauvegarder et restaurer un container Docker qui tourne un NAS Synology ! Sur les NAS, il est de plus en plus fréquent de mettre en place des applications et services à partir d'un container Docker : mais qu'en est-il de la sauvegarde ? Si le container plante totalement, comment le remettre en service sans perdre de données ? Et comment procéder à la restauration ? Voici mes conseils sur le sujet !
Lorsque l'on crée un container Docker, au-delà de l'image du container en lui-même, il convient de définir un emplacement de stockage pour que le container soit en mesure de stocker ses données : c'est ce répertoire qu'il faut sauvegarder ! Il n'existe pas encore d'outil pour sauvegarder l'intégralité du container avec ses données : on va devoir procéder en deux temps. La sauvegarde des données d'une part, et la sauvegarde de la configuration du container d'autre part.
Lorsque l'on va restaurer un conteneur Docker, on ne va pas réellement restaurer une sauvegarde ! En effet, on va créer un nouveau container avec la même configuration que le container HS, et restaurer les données au même emplacement (à partir de la sauvegarde de données).
Pour cet exemple, c'est le container Docker "Vaultwarden" qui va servir de cobaye !
Remarque : depuis DSM 7.2, l'application Docker proposée par Synology s'appelle Container Manager. Toutefois, la méthode évoquée dans cet article fonctionne dans les deux cas.
II. Sauvegarder les containers Docker
A. Sauvegarde des données avec Hyper Backup
Commençons par évoquer la sauvegarde des données. À partir de la console Container Manager, dans les détails du conteneur "vaultwarden", on peut avoir des informations sur le stockage dans la section "Volume". Ici, on voit que le conteneur stocke ses données à l'emplacement suivant sur le NAS : "/volume1/docker/vaultwarden. C'est ce répertoire qu'il va falloir sauvegarder, enfin, plutôt le dossier racine "Docker" pour sauvegarder les données de tous les conteneurs (à condition d'utiliser cette racine pour tous vos conteneurs).
À partir de l'explorateur de fichiers File Station de DSM, on peut voir que ce répertoire contient les données du conteneur "vaultwarden" :
Il ne reste plus qu'à créer une tâche de sauvegarde avec l'application Hyper Backup développée par Synology. On doit l'installer à partir du Centre de paquets.
Ensuite, on doit ouvrir l'application une fois qu'elle est installée et créer une nouvelle tâche en cliquant sur le "+".
À la première étape "Sélectionner un type de sauvegarde", on sélectionne "Dossiers et paquets".
Hyper Backup est capable de réaliser les sauvegardes en local, vers un périphérique de stockage connecté en USB, vers un autre NAS, ou encore dans le Cloud. En fonction de votre configuration, choisissez l'option qui vous convient le mieux. Dans mon cas, et pour cet exemple, la destination sera un dossier local alors je sélectionne "Dossier local & USB". Idéalement, il faudrait prévoir aussi une sauvegarde externalisée.
À l'étape suivante, on doit sélectionner l'emplacement des sauvegardes. Ici, ce sera au sein du dossier partagé nommé "Sauvegardes" au sein d'un répertoire nommé "Docker" (qui ne doit pas exister).
À l'étape suivante, il convient de sélectionner les données à sauvegarder : on sélectionne le répertoire "docker" car il contient un sous-répertoire par container (selon la configuration adoptée sur mon NAS). On pourrait sélectionner uniquement le répertoire d'un container spécifique.
Passez l'étape "Sauvegarde des applications" car il n'est pas possible de choisir Container Manager dans la liste.
L'étape "Paramètres de sauvegarde" permet de nommer la tâche et d'indiquer à quelle fréquence on souhaite effectuer la sauvegarde des données du container.
Poursuivez. À l'étape "Paramètres de rotation", on doit indiquer le nombre de sauvegardes à conserver. Il est conseillé d'activer la rotation pour gérer l'espace de stockage, sinon l'espace de stockage consommé par les sauvegardes ne fera qu'augmenter. S'il s'agit d'une sauvegarde Cloud, la facture pourrait être salée... Dans l'exemple ci-dessous, on conserve 30 versions et comme il y aura une sauvegarde par jour, ceci me permet d'avoir un historique sur 30 jours.
Validez la création de la tâche... On est invité à lancer la tâche dès maintenant : bonne idée pour tester son bon fonctionnement ! La sauvegarde des données des container est un succès !
B. Sauvegarde de la configuration du container
En complément de la sauvegarde des données du container, il est important de sauvegarder sa configuration. Cette opération ne peut pas être automatisée depuis l'interface de DSM. La bonne nouvelle, c'est qu'une fois qu'un container est en place, on modifie rarement sa configuration... Le fait de sauvegarder la configuration va permettre d'obtenir un fichier JSON qui contient la déclaration du volume, des ressources, des ports utilisés, etc... Ainsi, on peut recréer le container en l'état en quelques clics ! C'est l'objectif.
À partir de Container Manager, on sélectionne le container "vaultwarden", on clique sur "Action" puis sur "Exporter".
Ici, on a la possibilité d'exporter les paramètres du conteneur vers l'ordinateur local (ou vers un répertoire du NAS).
Ceci va permettre de sauvegarder la configuration du container !
III. Restaurer un container Docker
Imaginons que le container "vaultwarden" soit inutilisable : que faire pour le remettre en service ? Comment le restaurer ? Pour simuler une panne, j'ai supprimé le container de mon NAS et j'ai renommé le répertoire "vaultwarden" (on peut aussi le supprimer directement).
A. Créer un nouveau container propre
Tout d'abord, il convient de créer un conteneur propre, mais l'on ne partira pas de zéro ! On va importer le fichier JSON qui contient la configuration du conteneur ! À partir de Container Manager, on clique sur "Conteneur", puis sur "Action", "Importer" puis "À partir du périphérique local".
On sélectionne le fichier "vaultwarden.json", on nomme le conteneur et on clique sur "Importer".
Le conteneur Docker est créé, avec la même configuration qui existait précédemment ! De ce fait, il pointe déjà vers le répertoire "/volume1/docker/vaultwarden" du NAS, mais il lui manque ses données ! Avant de le démarrer, on va restaurer ses données.
B. Restaurer les données du container
La restauration des données s'effectue à partir de l'interface Hyper Backup. On sélectionne la tâche de sauvegarde "Sauvegarde locale Docker" sur la gauche (1), puis on clique sur "Liste des versions" (2) avant de cliquer sur le bouton Backup Explorer (3) après avoir sélectionné la version à restaurer.
On explore la sauvegarde... À la recherche du répertoire "vaultwarden" que l'on va simplement sélectionner avant de cliquer sur "Restaurer". On valide l'opération pour restaurer le dossier à son emplacement initial. Le bouton "Copier vers..." permet de faire la restauration à un autre endroit.
Une fois le répertoire restauré, il ne reste plus qu'à sélectionner le conteneur et à le démarrer via le menu "Action".
Voilà, le conteneur Vaultwarden est actif, tout comme l'application qui est de nouveau opérationnelle ! Les données sont bien celles présentes dans l'application au moment de la sauvegarde Hyper Backup.
IV. Conclusion
Si vous utilisez des containers Docker sur votre NAS Synology, je vous encourage vivement à mettre en place la sauvegarde des données de vos conteneurs ! N'attendez pas un crash avant de vous poser la question : désormais vous avez le tutoriel pour le faire à l'aide d'Hyper Backup. Vous pouvez utiliser une autre application pour la sauvegarde des données si vous préférez.
En complément, vous pouvez protéger les données de vos conteneurs et/ou les sauvegardes avec les snapshots immuables de DSM.
Bonjour
Par exemple j’utilise paperless, j’ai une sauvegarde HyperBackup qui tourne tous les jours sachant que le sous-dossier paperless dans le dossier docker contient des données + un export régulier du conteneur donc dans ce cas de figure votre tuto est excellent.
Mais qu’en est-il de plex qui bien entendu à son dossier du même nom crée dans docker + 2 sous-dossiers config et transcode qui doivent être présent quand je vais télécharger l’image linux server/plex qui va me permettre de créer le container plex. Mais voilà au fur et à mesure que j’alimente plex (films, musique) les datas (pas les films bien sûr mais les infos qui s’y rattachent, aucunes données se trouvent dans les sous-dossiers du dossier plex dans docker.
A ce niveau la sauvegarde d’hyperbackup ne m’est d’aucune utilité. Par contre et c’est là que je vous pose la question, si à l’export j’utilise « exporter le contenu et les paramètres du conteneur » ce qui apparemment ne fait pas le même poids à l’export, en cas de crash je suis sûr de retrouver ma config quand je relancerai plex ?
Je vous expose tout cela car hier soir j’ai fait une boulette avec l’image linux server/plex et cela ma réinitialiser le conteneur ce qui m’a obligé de refaire complément plex, numérotation de mes films avec information du support d’origine. Bref deux semaines que j’ai commencé le boulot suite à une migration de plex sur mon DS923+ sous docker. Un peu enervé.
D’avance merci pour votre retour
Cordialement