
Table des matières
Par défaut, Docker stocke tout dans « /var/lib/docker », qui se trouve sur la partition racine (/). À mesure que vos conteneurs grandissent, ce dossier peut se remplir rapidement. Si vous remarquez que votre serveur est lent, ne parvient pas à sauvegarder les données ou plante de manière aléatoire, c’est probablement parce que la partition racine manque d’espace. Dans ce guide, nous vous expliquerons les méthodes permettant de déplacer votre volume (ou vos données) Docker vers une autre partition et de libérer de l’espace dans la partition racine.
Pourquoi devez-vous déplacer les volumes Docker vers une autre partition
Les conteneurs Docker génèrent souvent de grandes quantités de données persistantes. Au fil du temps, ces données peuvent consommer l’espace de stockage de votre partition racine. Déplacer des volumes Docker vers une autre partition vous aide à :
- espace libre sur le système de fichiers racine
- éviter les pannes du système dues à l’épuisement du disque
- stocker des données d’application volumineuses sur un stockage dédié
- améliorer la gestion globale du stockage
Par exemple, les conteneurs de bases de données tels que MySQL ou PostgreSQL peuvent stocker des gigaoctets de données dans des volumes. Déplacer ces volumes vers une partition dédiée plus grande peut aider à maintenir la stabilité du système.
Localisez le répertoire de volumes Docker
Avant de déplacer un volume Docker, nous devons d’abord localiser où Docker le stocke sur le système. Exécutez la commande suivante pour répertorier tous les volumes Docker disponibles :
docker volume lsAprès avoir identifié le nom du volume, exécutez la commande ci-dessous pour inspecter ce volume spécifique :
docker volume inspect volume_nameCette commande affiche des informations détaillées sur le volume. Dans la sortie, recherchez le Mountpoint champ. Il montre le répertoire exact dans lequel Docker stocke les données du volume.

Déplacer la racine entière des données Docker
Une façon de déplacer les données Docker vers une autre partition consiste à déplacer l’intégralité du répertoire de stockage Docker, qui comprend les volumes, les images, les conteneurs et les journaux. C’est la méthode la plus propre et la plus sûre si « /var/lib/docker » se remplit.
Pour cela, vous devez d’abord arrêter le service Docker pour vous assurer qu’aucun fichier ne change pendant la migration :
sudo systemctl stop dockerEnsuite, vous pouvez copier les données Docker à l’aide de la commande rsync :
sudo rsync -avxP /var/lib/docker/ /path/to/new/partition/docker-data/Note: Remplacez « /path/to/new/partition/ » par le chemin de la nouvelle partition vers laquelle vous souhaitez migrer le dossier.
Cette commande copie le répertoire Docker tout en préservant les autorisations et en affichant la progression lors du transfert.

Vous pouvez également utiliser la commande suivante, qui préserve les attributs Docker supplémentaires tels que les liens physiques, les ACL et les attributs étendus :
sudo rsync -aHAX --info=progress2 /var/lib/docker/ /mnt/docker-data/Cette version est recommandée lors de la migration des données Docker car elle préserve davantage de métadonnées du système de fichiers et fournit un indicateur de progression globale plus clair.
Après cela, renommez l’ancien répertoire de données pour le sauvegarder avant de le supprimer.
sudo mv /var/lib/docker /var/lib/docker.oldMaintenant, mettez à jour la configuration de Docker en ouvrant le fichier démon avec cette commande :
sudo nano /etc/docker/daemon.jsonAjoutez le contenu suivant à ce fichier :
{
"data-root": "/path/to/new/partition/docker-data"
}
Enfin, redémarrez Docker avec sudo systemctl start docker. Après cela, vous pouvez confirmer le nouveau répertoire de données Docker avec la commande suivante :
docker info | grep "Docker Root Dir"
Si tout va bien, supprimez l’ancienne sauvegarde :
sudo rm -rf /var/lib/docker.oldDéplacer toutes les données Docker à l’aide de Docker Desktop (méthode GUI)
Docker Desktop vous permet de déplacer toutes les données Docker vers une autre partition en modifiant l’emplacement de l’image disque. Cette option transfère tout ce qui est stocké par Docker, y compris les images, les conteneurs, les volumes et le cache de build, vers un nouvel emplacement sur votre système.
Pour ce faire, ouvrez Docker Desktop et accédez à Paramètresallez à Ressources → Avancépuis recherchez le Emplacement de l’image disque option.

Cliquez Parcourir et choisissez un dossier sur la nouvelle partition ou le nouveau lecteur dans lequel vous souhaitez que Docker stocke ses données, tel que « /mnt/newdisk/docker-data ». Après avoir sélectionné le nouvel emplacement, cliquez sur Appliquer et redémarrer. Docker Desktop redémarrera ensuite et déplacera toutes les données Docker existantes vers la partition sélectionnée.

Note: Cela déplace toutes les données Docker. Il n’existe actuellement aucune option GUI permettant de déplacer des volumes individuels.
Déplacer uniquement des données de volume spécifiques
Vous pouvez déplacer un volume Docker spécifique vers une autre partition et l’utiliser avec votre conteneur via un montage de liaison hôte. Cette approche est simple, sûre et facile à sauvegarder. Avant de déplacer le volume, arrêtez le conteneur qui l’utilise :
docker stop container_nameAprès cela, utilisez rsync pour déplacer toutes les données en toute sécurité vers votre nouveau répertoire :
sudo rsync -a /var/lib/docker/volumes/my_volume/_data/ /data/docker/my_volume/Cela copiera tout de l’ancien volume vers « /data/docker/my_volume ».
Modifiez votre fichier « docker-compose.yml » pour utiliser un montage lié au lieu d’un volume géré par Docker :
services:
my_service:
volumes:
- /data/docker/my_volume:/container/pathRemplacer /container/path avec le chemin à l’intérieur du conteneur où le volume a été initialement monté. Redéployez ensuite le conteneur avec la commande suivante :
docker-compose up -dConclusion
Le déplacement des volumes Docker ou de l’intégralité du répertoire de données Docker vers une partition plus grande libère de l’espace sur votre système de fichiers racine et maintient la stabilité de votre serveur. Les conteneurs continuent de fonctionner correctement sans aucun risque de perte de données et la gestion future du stockage devient beaucoup plus facile.
Si le déplacement de l’intégralité du répertoire Docker n’est pas possible, vous pouvez toujours récupérer de l’espace en utilisant d’autres méthodes. Celles-ci incluent l’élagage des conteneurs, des images, des réseaux et des caches inutilisés avec des commandes docker system prune ou des commandes de prune individuelles, et l’utilisation de montages de liaison Linux pour déplacer des répertoires volumineux sans affecter le temps d’exécution de Docker.





