Move Docker Volume Larger Partition Featured

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 ls

Après avoir identifié le nom du volume, exécutez la commande ci-dessous pour inspecter ce volume spécifique :

docker volume inspect volume_name

Cette 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.

Inspecter un volume Docker spécifique

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 docker

Ensuite, 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.

Copier les données Docker Rsync

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.old

Maintenant, mettez à jour la configuration de Docker en ouvrant le fichier démon avec cette commande :

sudo nano /etc/docker/daemon.json

Ajoutez le contenu suivant à ce fichier :

{
"data-root": "/path/to/new/partition/docker-data"
}
Mettre à jour la configuration de Docker

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"
Confirmer le nouveau répertoire de données Docker

Si tout va bien, supprimez l’ancienne sauvegarde :

sudo rm -rf /var/lib/docker.old

Dé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 à RessourcesAvancépuis recherchez le Emplacement de l’image disque option.

Emplacement de l'image disque

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.

Changer la partition

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_name

Aprè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/path

Remplacer /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 -d

Conclusion

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.

Partager :
Facebook
Twitter
LinkedIn

Gentil Geek

Passionné d'informatique depuis ma plus tendre enfance aujourd'hui j'en ai fait mon métier. A vos côtés pour simplifier votre utilisation de l'informatique et vous permettre de gagner en compétences.

Poster le commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *