Maison  >  Article  >  Opération et maintenance  >  Pourquoi le fichier est-il supprimé dans Docker mais le disque est toujours à 100 % ?

Pourquoi le fichier est-il supprimé dans Docker mais le disque est toujours à 100 % ?

PHPz
PHPzoriginal
2023-04-18 10:25:252828parcourir

Lors du processus d'utilisation de Docker, de nombreuses personnes peuvent rencontrer le problème qu'après la suppression de l'image ou du conteneur Docker, l'espace disque occupé n'a pas été réduit et est toujours de 100 %. Pourquoi est-ce ? Regardons de plus près.

1. Utilisation de base de Docker

Avant de comprendre la cause du problème, passons brièvement en revue l'utilisation de base de Docker.

Exécutez le conteneur docker :

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

où IMAGE est le nom de l'image à exécuter, qui peut être visualisée via la commande docker images

 ; OPTIONS peut inclure les éléments suivants :

-d spécifie le conteneur à exécuter en arrière-plan ;

-p spécifie le mappage du port du conteneur, le format est : port hôte : port du conteneur ;

--name spécifie le nom du conteneur ;

-v spécifie le répertoire hôte et le point de montage du répertoire du conteneur ;

rm supprime automatiquement le conteneur.

Supprimer le conteneur docker :

docker rm CONTAINER [CONTAINER...]

où CONTAINER fait référence au nom ou à l'ID du conteneur, qui peut être visualisé via la commande docker ps -a.

Supprimer l'image docker :

docker rmi IMAGE [IMAGE...]

où IMAGE fait référence au nom ou à l'ID de l'image, qui peut être visualisée via la commande docker images.

2. Analyse du problème

Lorsque nous utilisons la commande ci-dessus pour supprimer un conteneur ou une image Docker, il existe généralement deux situations :

    Suppression du conteneur : lorsque nous utilisons la commande docker rm CONTAINER pour supprimer le conteneur, Docker le fera automatiquement. supprimer le conteneur. Le système de fichiers utilisé, car chaque conteneur "peut" avoir son propre système de fichiers indépendant. Ainsi, lorsqu’un conteneur est supprimé, l’espace qu’il occupe sera également libéré.
  1. Supprimer une image : lorsque nous utilisons la commande docker rmi IMAGE pour supprimer une image, Docker supprimera toutes les versions historiques de l'image et des couches intermédiaires, tout en conservant tout le contenu requis par les conteneurs qui utilisent toujours l'image. Par conséquent, si une image a été utilisée par plusieurs conteneurs, la suppression de l’image ne libérera pas tout l’espace occupé par l’image.
Sur la base de la situation ci-dessus, nous pouvons tirer une conclusion : la suppression de conteneurs ou d'images Docker ne garantit pas la libération immédiate de l'espace disque, et nécessite un nettoyage manuel à l'aide d'outils spécifiques.

3. Solution

Docker utilise en fait le système de fichiers de la machine hôte lors de l'exécution. Par conséquent, lorsque le conteneur ou l'image Docker est supprimé, nous devons nettoyer manuellement les fichiers indésirables laissés sur la machine hôte afin de réaliser le problème. disque Libération d'espace.

Voici la méthode de nettoyage spécifique :

    Nettoyer les fichiers indésirables générés par le conteneur
Dans le conteneur Docker, certains fichiers temporaires ou fichiers journaux peuvent être conservés, donc lors de la suppression du conteneur, ces fichiers doivent être inclus Supprimer pour qu'il ne prenne pas trop de place.

Vous pouvez le nettoyer avec la commande suivante :

docker ps -aq | Le conteneur correspondant et tous les volumes associés.

Nettoyer les images inutilisées

  1. Lorsque nous exécutons le conteneur, Docker téléchargera l'image requise à partir du référentiel officiel ou d'autres référentiels personnalisés et stockera la sauvegarde localement. Bien que ces sauvegardes occupent moins d’espace, elles peuvent également entraîner un espace disque insuffisant s’il existe un grand nombre d’images inutilisées.
Vous pouvez vérifier les images inutilisées avec la commande suivante :

docker images -q | xargs docker inspect --format='{{.Id}} {{.RepoTags}} {{.Size}}' | 3 -h

La fonction de cette commande est de lister les identifiants, les balises et les tailles de toutes les images et de les trier par taille.

Vous pouvez utiliser la commande suivante pour supprimer toutes les images inutilisées :

docker images -qf dangling=true | xargs docker rmi

La fonction de cette commande est de rechercher toutes les images inutilisées et de les supprimer.

Nettoyer le répertoire de données Docker

  1. Enfin, si les deux méthodes ci-dessus ne fonctionnent pas, vous pouvez nettoyer manuellement le répertoire de données Docker. Par défaut, le répertoire de données Docker se trouve sous /var/lib/docker/.
Vous pouvez utiliser la commande suivante pour nettoyer le répertoire :

docker system prune -a -f

La fonction de cette commande est : supprimer tous les objets inutilisés, y compris les images inutilisées, les données inutilisées et le cache de build inutilisé.

4. Résumé

Dans le processus d'utilisation de Docker, afin de libérer de l'espace disque, nous devons nettoyer manuellement certains fichiers indésirables laissés dans les conteneurs, les images et les répertoires de données Docker. Ces fichiers occupent non seulement beaucoup d'espace disque, mais occupent également des ressources système et affectent les performances du système. Par conséquent, il est très nécessaire de nettoyer régulièrement les fichiers indésirables de Docker.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn