Comment vérifier l'utilisation de l'espace disque pour les images et les conteneurs Docker

0
432

Avec des applications conteneurisées s'exécutant dans des environnements isolés, il peut être plus difficile que d'habitude de détecter les problèmes avec les applications utilisant trop beaucoup d'espace de rangement. Heureusement, Docker fournit des commandes pour gérer l'utilisation du disque du conteneur.

Faire une vérification rapide

Et si vous voulez vérifier combien d'espace Docker utilise, vous pouvez utiliser la commande intégrée docker system df, ainsi que la commande Linux du pour obtenir la taille de l'ensemble du répertoire.

docker system df sudo du -sh /var/lib/docker/< p>

Cette commande affiche les images statiques, les conteneurs qui ont apporté des modifications à leur système de fichiers (par exemple, les fichiers journaux) et les volumes liés à les conteneurs.

Cependant, ce n'est pas tout à fait exact—ici, j'ai de nombreux conteneurs en cours d'exécution, mais ils stockent tous des données dans des montages de liaison sur le système d'exploitation hôte, pas des volumes .

Nettoyage des images Docker

Les images Docker sont différentes des conteneurs en cours d'exécution ; ce sont les fichiers que vous téléchargez depuis Docker Hub pour lancer un conteneur. Ils sont généralement assez gros et contiennent tout le code nécessaire pour exécuter un système d'exploitation de base et votre application.

Publicité

Chaque version d'une image est distincte, mais elle est stockée dans couches, de sorte que plusieurs nouvelles versions ne prendront pas deux fois plus d'espace de stockage. Vous pouvez afficher toutes les images avec image ls :

docker image ls

Les nettoyer est facile ; vous ne voulez pas supprimer les images des conteneurs en cours d'exécution, bien sûr, mais la suppression des anciennes images est très bien, elles seront simplement téléchargées à nouveau si nécessaire.

Vous pouvez tout élaguer images, ou supprimez-en une manuellement par ID :

docker image prune -a docker image rm 3a8d8f76e7f8f

Vérification de l'utilisation du conteneur en cours d'exécution

Les conteneurs sont un peu plus difficiles à localiser, car ils peuvent utiliser les données de différentes manières :

  • Image sous-jacente : chaque conteneur devra stocker son image, mais celle-ci est réutilisée dans tous les conteneurs.
  • Couche de modification : si un conteneur écrit dans son système de fichiers, comme des fichiers journaux, ce sera enregistré dans un nouveau calque au-dessus de l'image sous-jacente. Ceci est unique à chaque conteneur.
  • Volumes : les conteneurs peuvent avoir des lecteurs virtuels montés sur eux, qui stockent les données directement sur le disque en dehors du système de stockage Docker.
  • Lier les montures : les conteneurs peuvent éventuellement accéder directement aux répertoires de l'hôte.

Tout, à l'exception des montages de liaison, apparaîtra dans la sortie df du système docker. Si vous souhaitez afficher les statistiques de chaque conteneur, Docker fournit un indicateur pour la commande ps pour répertorier l'utilisation :

docker ps –size

Ici, cela montre la taille sur le disque, ainsi que la taille virtuelle (qui inclut l'image sous-jacente partagée). Étant donné que ces conteneurs n'utilisent aucun stockage en dehors de leurs montages de liaison, la taille est de zéro octet.

Débogage des montages (liaisons et volumes)

Pour afficher l'utilisation du montage, à la fois pour les montages à liaison directe et les volumes gérés, vous devrez en obtenir la taille à partir du système d'exploitation hôte. Si vous ne savez pas où ils se trouvent, vous pouvez exécuter docker container ls pour obtenir l'ID d'un conteneur, puis exécuter docker inspect pour récupérer les informations de montage :

docker inspect a1c904020044 -f '{{json .Mounts}}' [{“Type”:”bind”,”Source”:”/home/daemon-data/921ff235-5075-4d64-b977-8d02cc3dacc9″,”Destination” :”/home/container”,”Mode”:””,”RW”:true,”Propagation”:”rprivate”}] Publicité

Ensuite, vous pouvez vérifier la taille totale avec du -sh :

sudo du -sh /path/to/mount/

Élagage des conteneurs et des volumes

Docker ne supprime jamais les conteneurs ou les volumes (sauf si vous exécuter des conteneurs avec l'indicateur –rm), car cela pourrait entraîner la perte de vos données. Cependant, il se peut que vous ayez sauvegardé d'anciennes données qui doivent être récupérées.

Tout comme les images, Docker fournit une commande d'élagage pour les conteneurs et les volumes :

docker container prune docker volume prune

Débogage manuel

Si vous avez un accès direct au serveur exécutant Docker, vous pouvez ouvrir un shell dans le conteneur :

sudo docker exec – it containerID /bin/bash

et exécutez du -sh sur l'ensemble, ce qui renverra toutes les données, y compris la taille de l'image, les données sur les montages de liaison et les données en volumes.

sudo du -sh /