si je veux restaurer le conteneur, je peux essayer de valider une image, puis supprimer plus tard le conteneur et créer un nouveau conteneur à partir de l'image validée. Mais si je fais cela, le volume est supprimé et toutes mes données ont disparu
Comme l'explique le guide de l'utilisateur du docker, les volumes de données sont censés conserver les données en dehors d'un système de fichiers de conteneur. Cela facilite également le partage de données entre plusieurs conteneurs.
Alors que Docker ne supprimera jamais les données des volumes (sauf si vous supprimez le conteneur associé avec docker rm -v
), les volumes qui ne sont référencés par aucun conteneur Docker sont appelés volumes suspendus . Ces volumes suspendus sont difficiles à éliminer et d'accès difficile.
Cela signifie que dès que le dernier conteneur utilisant un volume est supprimé, le volume de données devient suspendu et son contenu difficile d'accès.
Afin d'éviter ces volumes suspendus, l'astuce consiste à créer un conteneur Docker supplémentaire en utilisant le volume de données que vous souhaitez conserver; afin qu'il y ait toujours au moins ce conteneur docker référençant le volume. De cette façon, vous pouvez supprimer le conteneur Docker exécutant l'application wordpress sans perdre la facilité d'accès au contenu de ce volume de données.
Ces conteneurs sont appelés conteneurs de volume de données .
Il doit y avoir un moyen simple de sauvegarder mon conteneur ainsi que les données de volume, mais je ne le trouve nulle part.
images du docker de sauvegarde
Pour sauvegarder des images docker, utilisez la commande docker save qui produira une archive tar qui pourra être utilisée plus tard pour créer une nouvelle image docker avec la commande docker load .
conteneurs docker de sauvegarde
Vous pouvez sauvegarder un conteneur Docker par différents moyens
- en validant une nouvelle image docker basée sur l'état actuel du conteneur docker à l'aide de la commande docker commit
- en exportant le système de fichiers du conteneur docker en tant qu'archive tar à l'aide de la commande docker export . Vous pouvez plus tard créer une nouvelle image docker à partir de cette archive tar avec la commande docker import .
Sachez que ces commandes ne sauvegarderont que le système de fichiers en couches du conteneur Docker. Cela exclut les volumes de données .
sauvegarde des volumes de données du docker
Pour sauvegarder un volume de données, vous pouvez exécuter un nouveau conteneur en utilisant le volume que vous souhaitez sauvegarder et en exécutant la commande tar pour produire une archive du contenu du volume comme décrit dans le guide de l'utilisateur du docker .
Dans votre cas particulier, le volume de données est utilisé pour stocker les données d'un serveur MySQL. Donc, si vous souhaitez exporter une archive tar pour ce volume, vous devrez d'abord arrêter le serveur MySQL. Pour ce faire, vous devrez arrêter le conteneur wordpress.
sauvegarder les données MySQL
Une autre façon est de se connecter à distance au serveur MySQL pour produire un vidage de la base de données avec la commande mysqldump . Cependant, pour que cela fonctionne, votre serveur MySQL doit être configuré pour accepter les connexions à distance et avoir également un utilisateur autorisé à se connecter à distance. Ce n'est peut-être pas le cas avec l'image docker wordpress que vous utilisez.
Éditer
Docker a récemment introduit des plugins de volume Docker qui permettent de déléguer la gestion des volumes aux plugins implémentés par les fournisseurs.
La docker run
commande a un nouveau comportement pour l' -v
option. Il est maintenant possible de lui passer un nom de volume . Les volumes créés de cette manière sont nommés et faciles à référencer ultérieurement, ce qui simplifie les problèmes liés aux volumes suspendus .
Modifier 2
Docker a introduit la docker volume prune
commande pour supprimer facilement tous les volumes suspendus.