Bienvenue > Blog sur la sauvegarde et la restauration > Comment sauvegarder les conteneurs Docker ? Méthodes de sauvegarde des conteneurs Docker.

Comment sauvegarder les conteneurs Docker ? Méthodes de sauvegarde des conteneurs Docker.

1 Star2 Stars3 Stars4 Stars5 Stars
(15 votes, moyenne: 4,07 de 5)
Loading...
Mis à jour 9th février 2023, Rob Morrison

Bien que Docker – et tous les conteneurs – soient généralement un peu plus récents dans un environnement informatique de production que la plupart des autres technologies, il est toujours nécessaire de sauvegarder ces conteneurs, leurs applications et leurs données persistantes. Si un système informatique de production produit des données persistantes, ces données auront probablement une certaine valeur. Elles peuvent même être d’une importance critique. Par conséquent, il est probablement nécessaire de sauvegarder ces données au cas où une sorte de désastre se produirait, par exemple à la suite d’une violation de données ou d’une erreur humaine.

Ce sujet couvre à la fois la capacité de Docker à créer des sauvegardes par lui-même, ainsi que la capacité de diverses solutions tierces à créer des sauvegardes complètes de Docker, comme Bacula Enterprise.

Sauvegarde et restauration de conteneurs Docker

Cela commence généralement par le commit du conteneur en question en tant qu’image, en utilisant la commande suivante :

 

# docker commit -p [container-id] backup01
sha256:89682d4xxxxxx

Cette image peut être enregistrée sous forme de fichier .tar avec une autre commande :

 

# docker save -o backup01.tar backup01
# ls -al | grep back
-rw——- 1 root root 178697728 Mar 31 23:35 backup01.tar

Le fichier .tar peut également être enregistré sur le point de montage NFS. Une alternative pour cela est de pousser l’image en question (backup01) directement sur votre registre local. Pour ce faire, nous devons d’abord marquer l’image de manière appropriée :

 

# docker tag backup01 localhost:5000/backup-image:v1

Dans ce cas, localhost est le nom de l’emplacement, et 5000 est le numéro du port. Les deux peuvent être modifiés si nécessaire. Il est également important de se rappeler que le nom de l’étiquette et le référentiel doivent être en minuscules pour que l’étiquette soit appliquée correctement. Le processus est terminé avec le lancement de la commande push :

 

# docker push backup-image:v1

Puisque nous avons discuté de deux méthodes de sauvegarde, il y aura également deux méthodes de restauration. Pour restaurer l’image de sauvegarde à partir d’un fichier .tar, vous devez lancer la commande suivante :

 

# docker load -i /tmp/backup01.tar

La ligne de commande devrait vous montrer les lignes d’état suivantes si la commande a été saisie correctement :

 

ff91b8b5abb1: Loading layer [======================>] 2.56 kB/2.56 kB
Loaded image: backup01:latest

Une autre commande appelée docker run peut être utilisée pour créer un conteneur à partir de cette image.

Une image poussée peut être tirée directement avec une commande relativement simple :

 

# docker pull localhost:5000/backup-image:v1

Comme dans l’exemple précédent, le nom de l’hôte local et le numéro de port peuvent être modifiés si nécessaire.

Sauvegarde et restauration de volumes Docker

Un autre type de sauvegardes Docker s’effectue via des volumes – des fournisseurs de stockage persistant pour les conteneurs Docker. Ces volumes doivent être sauvegardés pour assurer la continuité des données.

Habituellement, les volumes Docker sont gérés par le daemon Docker, mais nous n’interagirons pas du tout avec lui. L’idée d’une sauvegarde de volume est d’obtenir une copie du volume sous forme de fichier compressé dans l’un des répertoires locaux. Cette copie est la sauvegarde que nous recherchons.

Dans cet exemple, notre conteneur en question s’appelle dckr-site avec le volume appelé dckr-volume, il est monté dans /var/lib/dckr/content/ et y stocke toutes les données.

La première étape consiste à arrêter le conteneur en utilisant la commande suivante :

 

$ docker stop dckr-site

La suivante porte à la fois sur le montage du conteneur et sur la sauvegarde du contenu du volume :

 

$ mkdir ~/backup
$ docker run –rm –volumes-from dckr-site -v ~/backup:/backup ubuntu bash -c “cd /var/lib/dckr/content && tar cvf /backup/dckr-site.tar .”

Dans ce scénario :

  • La commande docker run est utilisée pour créer un nouveau conteneur,
  • La commande –rm indique au système de supprimer le conteneur une fois l’opération terminée ;
  • –volumes-from dckr-site permet de monter les volumes du conteneur sur notre nouveau conteneur temporaire ;
  • – bash -c « cd /var/lib/dckr/content && tar cvf /backup/dckr-site.tar » crée une sauvegarde à partir de tout le contenu du répertoire /backup/

Le processus de récupération de ces sauvegardes n’est pas très compliqué. Il commence par la création d’un nouveau volume avec la commande suivante :

 

$ docker volume create dckr-volume-2

Vous pouvez ensuite utiliser la commande suivante pour restaurer le volume à partir d’un conteneur temporaire dans un fichier .tar :

 

$ docker run –rm -v dckr-volume-2:/recover -v ~/backup:/backup ubuntu bash -c “cd /recover && tar xvf /backup/dckr-site.tar”

Bien sûr, vous devrez monter ce nouveau volume dans le nouveau conteneur pour que cela fonctionne correctement :

 

$ docker run -d -v dckr-volume-2:/var/lib/dckr/content -p 80:2368 dckr:latest

Si la procédure est effectuée correctement, l’état complet de l’application devrait être restauré. Il est important de mentionner que cette méthode ne doit pas être utilisée comme source de sauvegarde unique, car les données de sauvegarde sont toujours stockées sur l’hôte, et seraient donc perdues en cas de perte de données ou de sinistre affectant également l’hôte.

Sauvegarde et restauration de Docker avec Bacula Enterprise

Bacula Enterprise utilise sa capacité modulaire pour permettre l’intégration native de divers systèmes et services, dont Docker. Le module Docker de Bacula offre de nombreuses fonctionnalités supplémentaires utiles en plus des fonctionnalités de base de sauvegarde et de restauration.

La sauvegarde de Docker avec Bacula Enterprise consiste en trois étapes simples :

  1. L’état actuel du conteneur est sauvegardé dans la nouvelle image.
  2. L’utilitaire Docker est exécuté et les données sont sauvegardées.
  3. Le snapshot en question est supprimé pour libérer l’espace.

La sauvegarde en question peut être effectuée sur un conteneur dans tous les états, et le logiciel Bacula indique l’état du processus de sauvegarde à chaque étape. Chaque sauvegarde d’image de conteneur signifie qu’un fichier .tar supplémentaire est sauvegardé. Les sauvegardes d’images sont conservées dans le répertoire /@docker/image//.tar, et les sauvegardes de conteneurs sont conservées dans le répertoire /@docker/container//.tar.

Le processus de restauration des sauvegardes Docker avec Bacula Enterprise est légèrement plus compliqué et peut être effectué de deux manières différentes :

  • Restaurer dans le répertoire local qui utilise le paramètre Bacula where=/some/path pour indiquer le chemin complet de la sauvegarde à restaurer sous forme de fichier(s) d’archive ;
  • Et la restauration vers le service Docker, ce qui signifie que les données de la sauvegarde seront restaurées avec la commande where= comme nouveau conteneur, sans les archiver en premier lieu.

La personnalisation du processus de restauration est également disponible via plusieurs paramètres différents, comme container_create, container_run, et plus encore.

À l’heure où nous écrivons ces lignes, Bacula est l’une des rares (voire la seule) solutions de sauvegarde et de restauration d’entreprise capable d’effectuer une sauvegarde complète et exhaustive d’un environnement Docker. Cependant, la disponibilité d’autres solutions spécialisées dans la sauvegarde de Docker, combinée à la solution intégrée de Docker, ainsi que le module Docker de Bacula, signifie qu’il existe une gamme de choix disponibles pour les responsables informatiques qui cherchent un moyen de sauvegarder leur déploiement de production Docker.

À propos de l’auteur
Rob Morrison
Rob Morrison est le directeur marketing de Bacula Systems. Il a commencé sa carrière dans le marketing informatique chez Silicon Graphics en Suisse, où il a obtenu de bons résultats dans divers rôles de gestion du marketing pendant près de 10 ans. Au cours des 10 années suivantes, Rob a également occupé divers postes de gestion du marketing chez JBoss, Red Hat et Pentaho, assurant la croissance des parts de marché de ces sociétés bien connues. Il est diplômé de l'université de Plymouth, titulaire d'un diplôme spécialisé en médias et communications numériques, et a suivi un programme d'études à l'étranger.
Laissez un commentaire

Votre adresse email ne sera pas publiée. Les champs requis sont indiqués *