Si vous utilisé docker depuis un certain temps vous vous êtes déjà surement posé la question de savoir comment sauvegarder l’un de vos conteneurs docker. Afin de pouvoir le réutiliser directement, plus tard, sur votre machine courante ou alors sur une autre machine. Les conteneurs sont ces couches logicielles qui sont créés à partir d’une image de docker qui contient le système de fichiers Linux respectifs et les applications out of the box. Nous allons voir plusieurs méthodes de sauvegarde et de restauration de conteneur docker.
1. Sauvegarde de conteneur
Pour sauvegarder nos conteneurs, nous avons plusieurs méthodes, des méthodes de sauvegarde locale et celle qui consiste à faire des sauvegardes en ligne (sur le docker hub) en privé ou en public.
Quel que soit la méthode utilisa nous commençons par enregistre les modifications faites sur un conteneur
docker commit -p ID_conteneur_a_sauvegarder Nom_Conteneur_de_sauvegarde
En gros lorsque l’on veut enregistrer les modifications faites sur un compteur on utilise la commande commit qui vas se charger de créer une image qui sera un instantané de notre conteneur. Les modifications faites sur le 1er conteneur sont donc tout enregistrées dans notre image. L’intérêt ici est de pouvoir désormais instancier un conteneur directement à partir de l’image que l’on a enregistrée. Nous pouvons sauvegarde notre image en ligne ou en local dans un fichier compressé.
Exemple : je vais enregistrer le conteneur nommé webstack_wordpress_1
[pastacode lang= »bash » manual= »docker%20ps%0Adocker%20commit%20-p%20040bc5052124%20webstack_wordpress_1_backup%0Adocker%20images » message= » » highlight= » » provider= »manual »/]
Nous pouvons maintenant sauvegarder cette image que nous venons de créer en ligne ou alors directement dans un fichier compressé (.tar).
a. Sauvegarde notre image docker en ligne.
Si vous souhaitez sauvegarder notre conteneur en ligne il vous faut utiliser les commandes qui vont suivre. Bien évidemment nous supposons ici que vous avez déjà réalisé les tâches précédentes afin de faire une image de l’instantanée de notre conteneur.
Vous devez commencer par créer un compte en ligne sur le docker hub c’est gratuit à l’heure actuelle profitez-en. Ensuite vous vous identifiez sur docker avec vos identifiants.
[pastacode lang= »bash » manual= »docker%20login » message= » » highlight= » » provider= »manual »/]
Une fois authentifié on va créer un tag pour notre image à exporter
Le nom de l’image respecte une convention de nommage. Cette convention de nommage veut que si notre image n’est pas officielle il faille mettre votre ID (votre login docker Hub) au début de l’image suivie de slash (/) ensuite suivie du nom propre que vous donnez à l’image (suivant son contenu). Exemple ID_Docker_Hub/wordpress.
Pour taguer l’image dans le repository public. Vous devez juste renseigner le nom de l’image en respectant la convention plus haut. ( docker tag ID_de_image ID_Docker_Hub/webstack_wordpress_1_backup )
Donc après s’être connecté, mon ID docker étant futuriste je tape la commande.
[pastacode lang= »bash » manual= »docker%C2%A0%20tag%C2%A0%209c725b3ace47%C2%A0%20futuriste%2Fwebstack_wordpress_1_backup%0Adocker%20push%20futuriste%2Fwebstack_wordpress_1_backup » message= » » highlight= » » provider= »manual »/]
NB: j’ai ajouté l’option –f à la commande tag pour forcer le tag, car j’avais fait une erreur à la première création.
b. Sauvegarder notre conteneur docker en local
Si vous souhaitez sauvegarder votre image en local dans un fichier compressé (tar) afin de le de le déplacer sur un serveur hors ligne ou même sur votre espace de sauvegarder privée. Vous devez utiliser la commande docker Save et vous lui passé le chemin et le nom du fichier de sauvegarder ainsi que le nom de l’image à sauvegarder (l’image que l’on a enregistrée précédent).
[pastacode lang= »bash » manual= »docker%20save%20-o%C2%A0%20webstack_wordpress_1_backup.tar%C2%A0%C2%A0%20webstack_wordpress_1_backup » message= » » highlight= » » provider= »manual »/]
2. Restauration de conteneur
a. Restaurer depuis un conteneur en ligne
Pour restaurer une image que nous avons sauvegardée sur le hub en ligne il suffit d’utiliser la commande docker pull pour rapatrier l’image en local comme pour n’importe qu’elle image hébergée sur docker.
[pastacode lang= »bash » manual= »docker%C2%A0%20pull%C2%A0%20futuriste%2Fwebstack_wordpress_1_backup » message= » » highlight= » » provider= »manual »/]
b. Restaurer depuis un conteneur en local ou un espace privé
Pour restaurer une image que nous avons sauvegardée en local, il suffit d’utiliser la commande docker load et de lui indiquer en paramètre le chemin d’accès à notre fichier de sauvegarde.
[pastacode lang= »bash » manual= »docker%20load%20%E2%80%93i%C2%A0%20webstack_wordpress_1_backup.tar » message= » » highlight= » » provider= »manual »/]
3. Docker compose
Docker Compose est un outil qui permet de décrire la composition de notre infrastructure dans le fichier docker-compose.yml au format YAML. L’avantage d’un tel outil est que pour démarrer notre stack Web qui est constitué d’un serveur web et d’un serveur mysql. Voici un exemple de conf.
Commencont déjà par installer le module Docker-Compose sur notre stack docker via l’outil de gestion de paquets PIP.
On commence par faire une mise à jour de la liste des paquets et on Install CURL
[pastacode lang= »bash » manual= »sudo%20apt-get%20update%C2%A0%20%26%26%20apt-get%20install%20curl%20″ message= » » highlight= » » provider= »manual »/]
Ensuite on télécharge le binaire de docker-compose la dernière version actuelle 1.8.0.
[pastacode lang= »bash » manual= »curl%20-L%20https%3A%2F%2Fgithub.com%2Fdocker%2Fcompose%2Freleases%2Fdownload%2FVERSION_NUM%2Fdocker-compose-%60uname%20-s%60-%60uname%20-m%60%20%3E%20%2Fusr%2Flocal%2Fbin%2Fdocker-compose » message= » » highlight= » » provider= »manual »/]
NB : remplacer VERSION_NUM par le numéro de votre version de docker-compose que vous voulez Ex : la 1.8.0 qui est la dernière version actuelle. Exemple de commande :
[pastacode lang= »bash » manual= »curl%20-L%20https%3A%2F%2Fgithub.com%2Fdocker%2Fcompose%2Freleases%2Fdownload%2F1.8.0%2Fdocker-compose-%60uname%20-s%60-%60uname%20-m%60%20%3E%20%2Fusr%2Flocal%2Fbin%2Fdocker-compose » message= » » highlight= » » provider= »manual »/]
On donne les droits d’exécution au binaire de docker compose.
[pastacode lang= »bash » manual= »chmod%20%2Bx%20%2Fusr%2Flocal%2Fbin%2Fdocker-compose » message= » » highlight= » » provider= »manual »/]
Pour connaitre la version de docker compose : docker-compose –version
Ensuite on créer un fichier YAML qui contiendra les informations de lancement de nos conteneurs docker. Créez un dossier qui nous servira de contexte pour nos conteneurs et créez-y le fichier docker-compose.yml que vous avez créé.
Créée un dossier pour notre ensemble de conteneurs
[pastacode lang= »bash » manual= »mkdir%20wordpress_1%0Anano%C2%A0%C2%A0%20wordpress_1%2Fdocker-compose.yml » message= » » highlight= » » provider= »manual »/]
Mettre le contenu suivant dans le fichier en question.
[pastacode lang= »apacheconf » manual= »mysql%3A%0A%20%20%09image%3A%20mysql%3A5.7%0A%20%20%09volumes%3A%0A%09%20%20-%20%22.%2F.data%2Fdb%3A%2Fvar%2Flib%2Fmysql%22%0A%20%20%09restart%3A%20always%0A%09%20%20environment%3A%0A%09%09MYSQL_ROOT_PASSWORD%3A%20docker2016%0A%09%09MYSQL_DATABASE%3A%20wordpress1%0A%09%09MYSQL_USER%3A%20wordpress1%0A%09%09MYSQL_PASSWORD%3A%20wordpress1%0A%0Awordpress%3A%0A%09image%3A%20wordpress%3Alatest%0A%09links%3A%0A%09%09-%20mysql%0A%09ports%3A%0A%09%09-%20%229000%3A80%22%0A%09restart%3A%20always%0A%09environment%3A%0A%09%09WORDPRESS_DB_HOST%3A%20mysql%3A3306%0A%09%09WORDPRESS_DB_NAME%3A%20wordpress1%0A%09%09WORDPRESS_DB_USER%3A%20wordpress1%0A%09%09WORDPRESS_DB_PASSWORD%3A%20wordpress1″ message= » » highlight= » » provider= »manual »/]
Donc en gros on décrit dans le fichier docker compose l’intégralité de la commande docker run utilisée lors du lancement du conteneur. Pas besoin d’explication si vous savez comment fonctionne la commande docker run vous pouvez essaiment de déduire ce que fais ce fichier docker-compose. Pour avoir de information sur l’ensemble des options disponible dans un fichier docker-compose aller à l’adresse Et vous pouvez avoir différent modèle de fichier docker compose préfet a cette adresse
ensuite avant de lancer la commande de docker compose on se positionne dans le dossier que l’on vient de créer et qui contient notre fichier YAML.
[pastacode lang= »bash » manual= »cd%20wordpress_1%0Adocker-compose%20up%20%E2%80%93d » message= » » highlight= » » provider= »manual »/]
Si lorsque vous lancez la commande docker-compose vous avez un message d’erreur qui vous informe que le client a une version différente de celle du serveur essayé d’ajuster la version du client que vous téléchargez afin de trouver celle qui correspond à votre serveur.
J’avais utilisé la commande :
[pastacode lang= »bash » manual= »curl%20-L%20https%3A%2F%2Fgithub.com%2Fdocker%2Fcompose%2Freleases%2Fdownload%2F1.8.0%2Fdocker-compose-%60uname%20-s%60-%60uname%20-m%60%20%3E%20%2Fusr%2Flocal%2Fbin%2Fdocker-compose%20″ message= » » highlight= » » provider= »manual »/]
Avant de relancer la commande curl pour télécharger le nouveau fichier penser à supprimer l’ancien qui avait été téléchargé :
[pastacode lang= »bash » manual= »rm%C2%A0%C2%A0%20%2Fusr%2Flocal%2Fbin%2Fdocker-compose » message= » » highlight= » » provider= »manual »/]
Pour corriger le problème, j’ai donc essayé de télécharger des versions antérieures. la version 1.4.0 avec la commande :
[pastacode lang= »bash » manual= »curl%20-L%20https%3A%2F%2Fgithub.com%2Fdocker%2Fcompose%2Freleases%2Fdownload%2F1.4.0%2Fdocker-compose-%60uname%20-s%60-%60uname%20-m%60%20%3E%20%2Fusr%2Flocal%2Fbin%2Fdocker-compose » message= » » highlight= » » provider= »manual »/]
N’oubliez pas d’attribuer les droits d’exécution à chaque fois.
[pastacode lang= »bash » manual= »chmod%20%2Bx%20%2Fusr%2Flocal%2Fbin%2Fdocker-compose » message= » » highlight= » » provider= »manual »/]
Il m’affiche le message :
J’ai donc supprimé l’ancien fichier et télécharger la version 1.3.0 de l’exécutable et cella a fonctionné correctement. J’ai utilisé la commande :
[pastacode lang= »bash » manual= »curl%20-L%20https%3A%2F%2Fgithub.com%2Fdocker%2Fcompose%2Freleases%2Fdownload%2F1.3.0%2Fdocker-compose-%60uname%20-s%60-%60uname%20-m%60%20%3E%20%2Fusr%2Flocal%2Fbin%2Fdocker-compose » message= » » highlight= » » provider= »manual »/]
Si vous souhaité désinstaller docker-compose alors que vous avez utilisé curl utiliser la commandé.
[pastacode lang= »bash » manual= »rm%20%2Fusr%2Flocal%2Fbin%2Fdocker-compose » message= » » highlight= » » provider= »manual »/]
Quelque commande docker-compose utile :
Ces commandes doivent être lancé dans l’un des répertoires qui contient un fichier YAML c’est-à-dire elle fonctionne pour un ensemble de conteneurs docker-compose uniquement.
Créer et démarrer un conteneur : docker-compose up
Créer et démarrer un conteneur en tâche de fond : docker-compose up –d
Afficher la sortie standard des conteneurs : docker-compose logs
Arrêter les conteneurs : docker-compose stop
Supprimer les conteneurs : docker-compose rm
4. Webographie :
1 commentaire pour l’instant