Par défaut, Docker organise ses données dans le répertoire « /var/lib/docker » de la partition racine.À mesure que vos applications et conteneurs se développent, ce répertoire peut rapidement occuper un espace considérable. Des symptômes tels qu’une baisse des performances du serveur, l’impossibilité d’enregistrer des données ou des plantages aléatoires indiquent souvent que la partition racine est presque saturée. Ce guide présente des stratégies efficaces pour déplacer vos volumes ou données Docker vers une autre partition, afin de soulager la partition racine.
L’importance du déplacement des volumes Docker
Les conteneurs Docker génèrent fréquemment d’importantes quantités de données persistantes, ce qui peut rapidement saturer la capacité de stockage de votre partition racine. Déplacer les volumes Docker vers une autre partition peut présenter plusieurs avantages :
- Libérez de l’espace sur le système de fichiers racine
- Évitez les pannes système dues à un manque d’espace disque.
- Allouer les données d’application plus volumineuses à des solutions de stockage dédiées
- Améliorer la gestion globale des ressources de stockage
Par exemple, les conteneurs de bases de données comme MySQL ou PostgreSQL peuvent stocker plusieurs gigaoctets de données. Transférer ces volumes vers une partition plus spacieuse peut considérablement améliorer la stabilité du système.
Comment trouver le répertoire du volume Docker
Localiser votre répertoire de volumes Docker est une étape cruciale avant de procéder au déplacement. Utilisez la commande ci-dessous pour lister tous vos volumes Docker disponibles :
docker volume ls

Pour obtenir des informations détaillées sur un volume spécifique, exécutez la commande suivante :
docker volume inspect volume_name
Dans le résultat, repérez le Mountpointchamp qui indique le répertoire exact où Docker conserve les données du volume.

Comment déplacer l’intégralité du répertoire racine de données Docker
Pour transférer toutes les données Docker (volumes, images et journaux inclus) vers une autre partition, vous pouvez déplacer l’intégralité du répertoire de stockage Docker. Cette méthode complète permet d’éviter la saturation de « /var/lib/docker ».
Commencez par arrêter le service Docker pour empêcher toute modification des fichiers pendant la migration :
sudo systemctl stop docker
Ensuite, utilisez la commande rsync pour copier les données Docker :
sudo rsync -avxP /var/lib/docker/ /path/to/new/partition/docker-data/
Cette commande répliquera le répertoire Docker tout en conservant les permissions et en affichant la progression du transfert.

Si vous devez conserver des attributs Docker supplémentaires, vous pouvez utiliser cette commande améliorée :
sudo rsync -aHAX --info=progress2 /var/lib/docker/ /mnt/docker-data/
Cette commande est préférable car elle conserve davantage de métadonnées du système de fichiers et fournit une indication détaillée de la progression.
Après le transfert, renommez le répertoire de données précédent en tant que sauvegarde :
sudo mv /var/lib/docker /var/lib/docker.old
Mettez à jour la configuration Docker en modifiant le fichier du démon à l’aide de :
sudo nano /etc/docker/daemon.json
Ajoutez la configuration suivante :
{"data-root": "/path/to/new/partition/docker-data"}

Ensuite, redémarrez Docker en exécutant :
sudo systemctl start docker
Vérifiez que le répertoire de données Docker a bien été mis à jour avec :
docker info | grep "Docker Root Dir"

Si tout semble correct, vous pouvez procéder à la suppression de l’ancienne sauvegarde :
sudo rm -rf /var/lib/docker.old
Déplacement de toutes les données Docker via Docker Desktop (méthode GUI)
Si vous préférez une interface graphique, Docker Desktop vous permet de transférer toutes les données Docker en modifiant l’emplacement de l’image disque. Cette méthode déplace efficacement toutes les données stockées par Docker (images, conteneurs et volumes) vers un nouvel emplacement.
Ouvrez Docker Desktop, accédez à Paramètres, puis à Ressources → Avancé, et repérez l’ option Emplacement de l’image disque.

Sélectionnez « Parcourir » pour indiquer un répertoire sur la partition où stocker les données de Docker, par exemple « /mnt/newdisk/docker-data ».Cliquez sur « Appliquer et redémarrer » pour lancer le déplacement des données.

Données de volume spécifique en mouvement
Pour plus de flexibilité, vous pouvez déplacer un volume Docker spécifique vers une autre partition tout en l’utilisant avec votre conteneur via un montage de liaison hôte. Cette approche est sécurisée, simple et simplifie les processus de sauvegarde. Commencez par arrêter le conteneur qui utilise le volume :
docker stop container_name
Ensuite, utilisez-le rsyncpour transférer les données volumineuses en toute sécurité :
sudo rsync -a /var/lib/docker/volumes/my_volume/_data/ /data/docker/my_volume/
Cette commande transférera tout le contenu du volume précédent vers « /data/docker/my_volume ».
Vous devez modifier votre fichier « docker-compose.yml » pour qu’il indique un montage de type bind au lieu d’un volume géré par Docker :
services: my_service: volumes: - /data/docker/my_volume:/container/path
Veillez à remplacer /container/pathle chemin de montage par le chemin d’origine à l’intérieur du conteneur. Redéployez le conteneur à l’aide de la commande suivante :
docker-compose up -d
Conclusion
Transférer les volumes Docker ou l’intégralité du répertoire de données Docker vers une partition plus spacieuse peut libérer considérablement de l’espace sur votre système de fichiers racine, améliorant ainsi la stabilité du serveur. Cette approche proactive minimise les risques de perte de données et simplifie la gestion future du stockage.
Si le déplacement de l’intégralité du répertoire Docker s’avère impossible, d’autres options existent pour récupérer de l’espace, comme l’utilisation de la docker system prunecommande pour supprimer les conteneurs, images, réseaux et caches inutilisés, ou l’utilisation de points de montage Linux pour déplacer des répertoires importants sans perturber le fonctionnement de Docker.
Laisser un commentaire