Pourquoi une stack Compose attache-t-elle un nouveau volume nommé vide après son redéploiement ?

Eva Wong est la rédactrice technique et bricoleuse résidente chez ZimaSpace. Geek depuis toujours, passionnée par les homelabs et les logiciels open source, elle se spécialise dans la traduction de concepts techniques complexes en guides accessibles et pratiques. Eva croit que l’auto-hébergement doit être amusant, pas intimidant. À travers ses tutoriels, elle donne à la communauté les moyens de démystifier les configurations matérielles, depuis la construction de leur premier NAS jusqu’à la maîtrise des conteneurs Docker.

Une stack Compose peut associer un nouveau volume nommé vide lorsque le redéploiement modifie le nom du volume associé au projet ou ne parvient pas à retrouver le volume d’origine.

Les anciennes données peuvent toujours exister dans un autre volume Docker, tandis que le service recréé monte un volume nouvellement généré au même chemin dans le conteneur. Les causes courantes incluent la modification du nom de la stack ou du projet, le changement de clé du volume, sa suppression à l’aide d’une commande qui supprime les volumes, la perte d’une déclaration externe, un déploiement via un autre gestionnaire ou un nom de volume explicite qui est désormais résolu différemment. Répertoriez le volume monté et les candidats orphelins avant de restaurer les données ou d’initialiser l’application.

Identifier le volume exact monté par le nouveau conteneur

Examinez les montages du conteneur en cours d’exécution et notez le nom du volume, le pilote, le point de montage, les étiquettes, la date de création, la destination dans le conteneur et le mode lecture-écriture. Comparez-les aux relevés effectués avant le redéploiement.

La commande docker volume inspect d’Ubuntu expose l’identité du volume, ce qui permet de distinguer le nouveau volume vide d’un ancien volume démonté au nom similaire.

Ne copiez pas de données dans le nouveau volume avant d’avoir retrouvé l’original. Le démarrage de l’application peut créer une nouvelle base de données et donner l’impression que la destination a été initialisée volontairement.

Vérifier si le nom du projet Compose a changé

Comparez l’ancien et le nouveau nom du projet, le nom de la stack, le répertoire Compose, l’option -p, COMPOSE_PROJECT_NAME, la valeur name: de niveau supérieur et le gestionnaire de déploiement.

Docker explique que Compose associe normalement à un volume le nom du projet suivi de la clé du volume, sauf si un nom explicite ou une recherche de volume externe est configuré.

Déplacer le même fichier Compose dans un autre répertoire peut donc créer un deuxième projet et un deuxième volume, même lorsque les clés du service et du volume restent inchangées.

Vérifier les paramètres du nom stable et du volume externe

Comparez la définition du volume de niveau supérieur avant et après le redéploiement. Vérifiez name:, external:, les options du pilote, les variables d’interpolation et l’existence du volume attendu.

Le tutoriel Docker Compose de Microsoft indique que les volumes nommés persistent indépendamment du remplacement des conteneurs ; un nouvel état vide signifie donc généralement qu’un autre volume a été associé ou que l’ancien a été supprimé.

Ne marquez un volume comme externe que lorsque son cycle de vie est volontairement géré en dehors de la stack. Compose doit échouer clairement lorsqu’un volume externe est absent, plutôt que de créer silencieusement un remplacement.

Vérifier si un nettoyage a supprimé le volume d’origine

Examinez les journaux de déploiement, les scripts, les actions de l’interface, les tâches de nettoyage et les commandes de suppression des volumes. Comparez la date de création du volume avec l’événement de redéploiement.

Red Hat indique que les volumes nommés gérés par les conteneurs disposent d’emplacements de stockage distincts des couches inscriptibles des conteneurs ; c’est pourquoi supprimer un conteneur et supprimer son volume nommé sont deux événements différents du cycle de vie.

Si le volume d’origine est absent, désactivez les démarrages automatiques et restaurez uniquement depuis une sauvegarde vérifiée. Ne supposez pas qu’un volume de remplacement vide contient une couche supprimée récupérable.

Comparer l’identité du gestionnaire de stack et la méthode de déploiement

Notez si la stack a été lancée via l’interface CLI, Portainer, une boutique d’applications NAS, un déploiement Git ou un autre outil d’automatisation. Comparez le nom de la stack et les valeurs d’environnement enregistrées par ce gestionnaire.

Portainer exige un nom de stack descriptif lors du déploiement, et l’identité contrôlée par ce gestionnaire peut différer du nom de projet basé sur le répertoire et utilisé par une commande Compose manuelle.

Un démarrage manuel d’urgence peut donc créer des ressources sous un autre préfixe de projet. Choisissez un seul responsable du déploiement et documentez les noms de volumes résolus qu’il crée.

Écarter la présence de données masquées sous le nouveau montage de volume

Arrêtez le conteneur et inspectez l’image ou le chemin de liaison sans le volume nommé dans un test temporaire. Déterminez si le démarrage a écrit des données dans la couche du conteneur avant le montage du volume.

Le manuel Linux consacré au montage explique qu’un montage masque le contenu préexistant d’un répertoire ; les données peuvent donc sembler absentes lorsqu’un nouveau volume vide recouvre des fichiers créés dans l’image ou dans la couche inscriptible.

Ne fusionnez pas aveuglément la couche masquée et l’ancien volume persistant. Déterminez quel état fait autorité et utilisez la méthode de récupération prise en charge par l’application.

Reconnecter le volume d’origine avec un test contrôlé

Arrêtez la stack, sauvegardez les deux volumes candidats, associez l’original à un conteneur temporaire ou à un service de test sur un chemin provisoire, puis vérifiez les fichiers de l’application, l’identité de la base de données, les propriétaires et les horodatages.

Le guide ZimaSpace consacré au déplacement des données de conteneur sans modifier les points de montage présente le processus complémentaire de correspondance des chemins ; cet article se concentre sur l’identité des volumes nommés associés au projet.

Le problème est résolu lorsque l’ancien volume souhaité est monté sous un nom explicite ou externe stable et que les redéploiements successifs le réutilisent sans créer un autre volume vide candidat.

Foire aux questions

Un volume nommé vide signifie-t-il que les anciennes données ont été supprimées ?

Pas nécessairement. L’ancien volume peut toujours exister sous un autre préfixe de projet ou un autre nom explicite, tandis que le nouveau conteneur utilise un volume vide différent.

Le changement de nom du dossier Compose peut-il créer un nouveau volume ?

Oui. Lorsqu’aucun nom de projet n’est fixé, Compose peut le déduire du répertoire du projet et créer des ressources portant des préfixes différents.

Les volumes importants doivent-ils être marqués comme externes ?

Les volumes externes peuvent empêcher la suppression de la stack de gérer leur cycle de vie, mais ils nécessitent une création, un nommage, une sauvegarde et des vérifications de déploiement rigoureux.

Assistance et conseils

Plus à lire

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.