Comment effectuer une sauvegarde des containers

Vous avez déjà ressenti le besoin de sauvegarder un instantané de tous vos conteneurs Docker, mais vous n’avez jamais eu le temps ni l’énergie pour rédiger un script capable de le faire automatiquement ? Ne vous inquiétez pas, je vais vous aider à résoudre ce problème.

Disons simplement que vous enregistrez ces sauvegardes dans un répertoire par exemple: /backup de votre système. Ensuite, vous exécuterez simplement ce code depuis un script bash :

for CONTAINER in $(docker ps -a --format '{{.Names}}'); do
    docker export $(docker ps -a |grep $CONTAINER \
    |awk '{print $1}') > /backup/backup_${CONTAINER}_$(date +%d-%m-%Y).tar
done

Il enregistre le système de fichiers actuel du conteneur sous forme d’archive tar.

Toutefois, il est important de noter que la commande docker export ne comprend PAS la copie du contenu des volumes associés aux conteneurs, comme expliqué dans la documentation officielle de Docker. Pour ce faire, vous devrez explorer d’autres solutions telles que la synchronisation directe des fichiers avec les répertoires liés aux volumes.

En outre, en raison de son mécanisme, l’utilisation de la commande docker export supprimera le point d’entrée et l’historique du conteneur, la rendant ainsi utile uniquement si vous avez l’intention d’accéder aux informations du conteneur, mais non si vous prévoyez de relancer l’image en tant que conteneur. Pour y accéder, vous devrez d’abord créer une nouvelle image à partir de l’archive tar :

$ docker import /backup/backup_${CONTAINER}_$(date +%d-%m-%Y).tar ${NOM_DE_L-IMAGE}

Et puis exécuter un conteneur basé sur la nouvelle image, comme ceci :

$ docker run -ti ${IMAGE_ID} /bin/bash

Si vous souhaitez créer une copie d’un conteneur existant en préservant toutes ses informations, vous devrez recourir à la commande commit pour générer une nouvelle image à partir de l’état actuel du conteneur, comme suit :

$ docker commit ${CONTAINER} ${NOM_DE_L-IMAGE}_$(date +%d-%m-%Y)

Ensuite, vous pouvez l’exporter vers une nouvelle archive tar :

$ docker save > /backup/${NOM_DE_L-IMAGE}_$(date +%d-%m-%Y).tar

Donc, si c’est ce que vous cherchez à faire avec tous vos conteneurs, vous pouvez exécuter un script de ce genre :

for CONTAINER in $(docker ps -a --format '{{.Names}}'); do
    docker commit $(docker ps -a |grep $CONTAINER \
    |awk '{print $1}') ${CONTAINER}_$(date +%d-%m-%Y)
    docker save > /backup/${CONTAINER}_$(date +%d-%m-%Y)
done

Et enfin si vous souhaitez importer vos images depuis les fichiers tar vous pouvez exécuter :

$ docker load  < /backup/${NOM_DE_L-IMAGE}_$(date +%d-%m-%Y).tar

0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Site développé et maintenu par la société DevNet-Solutions.fr

ErosiaX est une application libertine dédiée aux rencontres libertines, offrant un espace sécurisé et discret pour explorer des affinités d'érotismes diverses. Favorisant la liberté et le respect mutuel, ErosiaX permet à ses membres libertins de découvrir des partenaires partageant des intérêts similaires dans une communautée libertine ouverte et accueillante.