Sur un Mac utilisant Docker Desktop, sauvegardez un volume nommé Compose en le montant dans un conteneur temporaire et en écrivant une archive tar dans un dossier de votre Mac. Vérifiez le nom du volume, arrêtez les services qui y écrivent, créez l'archive et confirmez que le fichier existe avant de supprimer les conteneurs. Un docker compose down classique conserve les volumes nommés ; docker compose down --volumes supprime les volumes de projet éligibles, ne l'exécutez donc pas avant que la sauvegarde ne soit terminée.
1. Identifier le volume Compose et son chemin de montage
Dans le Terminal, accédez au répertoire contenant le fichier Compose du projet. Trouvez le montage du service, comme db-data:/var/lib/postgresql/data, ainsi que sa déclaration de premier niveau correspondante sous volumes:. La partie gauche, db-data, est la clé Compose ; le chemin dans le conteneur après les deux-points est l'endroit où l'application voit les données. Compose peut créer le volume Docker effectif avec un préfixe de projet, tandis qu'un name: configuré peut lui donner un nom personnalisé. La documentation de référence des volumes Compose de Docker décrit ces règles de nommage.
Listez les volumes utilisés par le projet Compose actuel :
docker compose volumes
Utilisez cette sortie et le fichier Compose pour identifier le volume Docker exact. Si le projet utilise plusieurs fichiers Compose, des profils ou un nom de projet personnalisé, utilisez les mêmes options lors de l'inspection que lors du démarrage de la pile (stack). Ne devinez pas le nom réel du volume uniquement à partir de la clé YAML. docker volume ls peut afficher tous les volumes Docker, mais il peut inclure des projets non liés.
2. Arrêter les écritures avant de créer l'archive
Une archive du système de fichiers n'est pas nécessairement une sauvegarde cohérente de base de données si cette dernière est modifiée pendant la copie des fichiers. Arrêtez d'abord proprement l'application ; pour une pile Compose, docker compose stop arrête ses services tout en conservant les conteneurs et les volumes. Si la base de données dispose d'une procédure de dump ou de sauvegarde spécifique à l'application, utilisez-la lorsque la cohérence au niveau des transactions est importante, puis créez également une archive du volume si vous avez besoin d'une copie au niveau des fichiers.
Évitez docker compose down --volumes à ce stade. La documentation de Compose précise que down supprime par défaut les conteneurs et les réseaux du projet, tandis que --volumes supprime également les volumes nommés et anonymes éligibles. Les volumes externes ne sont pas supprimés par down. La documentation de référence de compose down de Docker explique cette distinction.
3. Créer une sauvegarde tar dans un dossier du Mac
L'exemple suivant suppose que le volume Docker réel s'appelle myproject_db-data. Remplacez cette valeur par le nom exact que vous avez identifié. Il enregistre db-data-backup.tar dans le répertoire courant du Mac. Docker Desktop exécute le moteur Docker au sein d'une machine virtuelle Linux, les données d'un volume nommé sont donc gérées par Docker ; cette méthode les copie via un conteneur temporaire plutôt que de s'appuyer sur un chemin de stockage de la VM Linux. Le guide des volumes de Docker décrit l'approche combinant conteneur auxiliaire et tar, et la documentation des paramètres Docker Desktop pour Mac détaille la VM Linux et le partage de fichiers avec l'hôte.
volume_name='myproject_db-data'
backup_dir="$PWD"
backup_file='db-data-backup.tar'
docker run --rm \
--mount "type=volume,source=$volume_name,target=/source,readonly" \
--mount "type=bind,source=$backup_dir,target=/backup" \
alpine sh -c 'tar -C /source -cf "/backup/'"$backup_file"'" .'
L'archive est écrite dans le répertoire représenté par $PWD, choisissez donc un emplacement disposant de suffisamment d'espace libre avant d'exécuter la commande. Le volume est monté en lecture seule dans le conteneur auxiliaire pour éviter toute modification accidentelle pendant la copie ; cela n'empêche pas en soi d'autres conteneurs d'écrire, c'est pourquoi il est essentiel d'arrêter au préalable les processus effectuant des écritures. La commande nécessite que Docker Desktop soit en cours d'exécution et que le dossier du Mac soit accessible pour les montages de type bind. Si le montage échoue, vérifiez les accès de partage de fichiers de Docker Desktop pour ce dossier.
Vérifiez que l'archive existe et qu'elle a une taille non nulle plausible :
ls -lh "$backup_file"
Cela confirme qu'un fichier a été créé, et non que son contenu constitue une sauvegarde applicative restaurable. Conservez l'archive dans un emplacement distinct du volume géré par Docker, et envisagez de la copier vers votre destination de sauvegarde habituelle avant de supprimer les données.
4. Supprimer les conteneurs uniquement après avoir vérifié votre cible
Une fois l'archive en place, supprimez les conteneurs du projet avec :
docker compose down
Cela laisse le volume nommé en place par défaut. Si votre intention est également de supprimer le volume, vérifiez d'abord à nouveau les noms du projet et du volume, puis utilisez docker compose down --volumes uniquement lorsque vous êtes prêt à supprimer ces données. Un volume externe ou portant un nom personnalisé peut avoir un cycle de vie différent ; consultez la définition Compose et la référence des commandes Docker plutôt que de supposer que l'option affecte chaque volume.
Considérations sur la restauration
Le processus de gestion des volumes documenté par Docker restaure une archive tar en montant le volume de destination et en y extrayant l'archive. Pour les fichiers de base de données, restaurez dans un volume vierge ou intentionnellement vidé pendant que le service de base de données est arrêté, et respectez les exigences de propriété des fichiers et d'initialisation de l'image de la base de données. N'effectuez pas d'extraction par-dessus un volume contenant des données dont vous avez encore besoin : les fichiers existants peuvent entrer en conflit avec l'archive, et une extraction tar n'est pas une stratégie de fusion sûre. Si vous avez besoin d'un point de récupération cohérent au niveau de la base de données, utilisez le processus de sauvegarde et de restauration propre à la base de données en complément ou à la place d'une archive brute de fichiers.
Sources
docker compose down — Docker
Volumes — Docker
Change your Docker Desktop settings — Docker