GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

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

Vous vous demandez combien d'espace Docker consomme sur votre système Linux ?

Principalement, toutes les images Docker, conteneurs et autres entités associées se trouvent dans /var/lib/docker . Vous pouvez vérifier la taille de ce répertoire et obtenir l'espace disque total utilisé par Docker :

[email protected]:~$ sudo du -sh /var/lib/docker
4.9G	/var/lib/docker

Mais ce n'est pas très descriptif et vous devrez peut-être aller plus loin dans ce répertoire pour voir quel composant utilise quel espace.

Heureusement, Docker a fourni des outils pour obtenir ces informations de manière plus utile.

Vérification de l'utilisation de l'espace disque Docker [The Docker Way]

La méthode "Docker" la plus basique pour savoir combien d'espace est utilisé par les images, les conteneurs, les volumes locaux ou le cache de construction est la suivante :

docker system df

Lorsque vous exécutez cette commande (utilisez sudo si nécessaire), vous obtenez toutes les informations d'utilisation du disque regroupées par composants Docker.

[email protected]:~$ docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          4         4         1.065GB   0B (0%)
Containers      4         4         5.705kB   0B (0%)
Local Volumes   7         7         1.108GB   0B (0%)
Build Cache     0         0         0B        0B

C'est certainement mieux que de regarder la taille totale de /var/lib/docker. Vous pouvez voir combien d'espace est consommé par les images, les conteneurs et les volumes.

Cependant, cela fournit toujours une image claire sur laquelle l'image ou le volume prend plus d'espace.

En fait, c'est le cas. Le docker system df la commande a l'option détaillée -v qui donne tous ces détails.

docker system df -v

Voici la sortie détaillée :

[email protected]:~$ docker system df -v
Images space usage:

REPOSITORY                               TAG       IMAGE ID       CREATED         SIZE      SHARED SIZE   UNIQUE SIZE   CONTAINERS
ghost                                    4.32.0    b40265427368   8 weeks ago     468.8MB   0B            468.8MB       1
jrcs/letsencrypt-nginx-proxy-companion   latest    037cc4751b5a   13 months ago   24.35MB   0B            24.35MB       1
jwilder/nginx-proxy                      latest    509ff2fb81dd   15 months ago   165MB     0B            165MB         1
mariadb                                  10.5.3    f5d2bcaf057b   20 months ago   407MB     0B            407MB         1

Containers space usage:

CONTAINER ID   IMAGE                                    COMMAND                  LOCAL VOLUMES   SIZE      CREATED        STATUS        NAMES
899cc90e85d9   ghost:4.32.0                             "docker-entrypoint.s…"   1               0B        8 weeks ago    Up 8 weeks    ghost_ghost_6
17b58fdafbce   jrcs/letsencrypt-nginx-proxy-companion   "/bin/bash /app/entr…"   4               571B      3 months ago   Up 2 months   letsencrypt-proxy-companion
58f99f46ee03   jwilder/nginx-proxy                      "/app/docker-entrypo…"   5               5.13kB    3 months ago   Up 2 months   jwilder-nginx-proxy
fb907286b60e   mariadb:10.5.3                           "docker-entrypoint.s…"   1               2B        3 months ago   Up 2 months   ghost_db_1

Local Volumes space usage:

VOLUME NAME                      LINKS     SIZE
ghostdb                          1         434.7MB
jwilder-nginx-with-ssl_acme      2         36.09kB
jwilder-nginx-with-ssl_certs     2         25.12kB
jwilder-nginx-with-ssl_dhparam   1         1.525kB
jwilder-nginx-with-ssl_html      2         1.106kB
jwilder-nginx-with-ssl_vhost     2         556B
ghost                            1         674MB

Build cache usage: 0B

CACHE ID   CACHE TYPE   SIZE      CREATED   LAST USED   USAGE     SHARED

C'est bien, non ? Il existe également d'autres moyens.

Vérification des tailles d'image Docker

Si vous souhaitez uniquement voir les images Docker et leurs tailles, vous pouvez également utiliser cette commande :

docker image ls

Il répertorie toutes les images Docker de votre système avec quelques détails dont la taille :

[email protected]:~$ docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
busybox       latest    beae173ccac6   6 weeks ago     1.24MB
ubuntu        latest    fb52e22af1b0   5 months ago    72.8MB
alpine        latest    49f356fa4513   10 months ago   5.61MB
hello-world   latest    d1165f221234   11 months ago   13.3kB

Vérification des tailles de conteneur en cours d'exécution

De même, si vous souhaitez connaître la taille des conteneurs Docker en cours d'exécution, vous pouvez utiliser la commande docker ps :

docker ps --size

Vous devriez voir une colonne SIZE ajoutée à la sortie de la commande :

[email protected]:~$ docker ps --size
CONTAINER ID   IMAGE     COMMAND      CREATED         STATUS         PORTS     NAMES           SIZE
1171dcfb7e06   alpine    "sleep 10"   10 months ago   Up 9 seconds             always-policy   0B (virtual 5.61MB)

Avez-vous remarqué qu'il indique 0 B, ​​puis affiche un 5,61 Mo virtuel ? La taille virtuelle inclut l'image sous-jacente partagée.

Revenons plus spécifiquement à l'approche Linux, avec l'image et le conteneur Alpine comme exemple pratique.

Utilisation des commandes Linux standard pour analyser l'utilisation de l'espace disque Docker

Chaque fois que vous utilisez le docker pull commande ou exécutez docker-compose up -d pour préparer le lancement des applications, voici comment rechercher l'utilisation de l'espace image, effectivement stocké sur un serveur Ubuntu 20.04 :

sudo du -sh /var/lib/docker/overlay2/<hash-named-directory>/

Ici, Overlay2 est le pilote de stockage Docker par défaut sur Ubuntu. Vous pouvez le confirmer en exécutant le docker info commande et recherchez le pilote de stockage :

Storage Driver: overlay2

S'il est différent du vôtre, vous utilisez un autre pilote de stockage pour Docker. De même, l'emplacement du répertoire serait nommé selon le même pilote de stockage. La disponibilité du pilote de stockage dépend de la prise en charge du noyau.

Utilisation spécifique du disque d'image

Si vous recherchez les emplacements d'images spécifiques, vous pouvez utiliser la commande Docker inspect pour l'image extraite. Supposons, par exemple, que j'ai extrait l'image alpine avec docker pull alpine . Exécutez la commande suivante pour l'inspecter :

$ docker inspect alpine

Une fois que vous exécutez la commande, vous remarquerez trois champs à l'intérieur du Data sous-section sous GraphDriver :

...
        "GraphDriver": {
            "Data": {
                "MergedDir": "/var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e/merged",
                "UpperDir": "/var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e/diff",
                "WorkDir": "/var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e/work"
            },

...

Sur la base des informations ci-dessus, vous pouvez voir que le (mentionné précédemment dans le du syntaxe de commande) dans ce cas est 64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e .

Ici, vous pouvez exécuter la commande suivante pour révéler la quantité d'espace utilisée par l'image Alpine :

[email protected]:~$ sudo du -sh /var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e
6.0M	/var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e

De même, comme les images, les conteneurs sont également stockés dans le même répertoire basé sur le pilote de stockage.

/var/lib/docker/overlay2

Utilisation spécifique du disque de conteneur

Si vous recherchez les emplacements de conteneurs spécifiques, vous pouvez à nouveau utiliser le inspect commande sur Docker pour le conteneur en cours d'exécution. Supposons, par exemple, que j'ai exécuté le conteneur alpin avec docker run -ti -d alpine . Lorsque vous exécutez docker ps , vous verrez qu'il est en cours d'exécution :

$ docker ps
CONTAINER ID   IMAGE     COMMAND     CREATED         STATUS         PORTS     NAMES
cb341d6a28fa   alpine    "/bin/sh"   6 seconds ago   Up 5 seconds             confident_banzai

Ici, le conteneur a été nommé aléatoirement confident_banzai . Inspectons-le :

$ docker inspect confident_banzai

Une fois que vous avez exécuté la commande ci-dessus, vous remarquerez les quatre champs mentionnés précédemment dans le Data sous-section sous GraphDriver . Ces emplacements sont ceux où les données du conteneur sont physiquement stockées sur votre système hôte, comme vous l'avez vu pour les images :

...
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3-init/diff:/var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e/diff",
                "MergedDir": "/var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3/merged",
                "UpperDir": "/var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3/diff",
                "WorkDir": "/var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3/work"
            },
            "Name": "overlay2"
        },
...

Vous pouvez maintenant utiliser le du commande à nouveau :

[email protected]:~$ sudo du -sh /var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3
32K	/var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3

Contrairement aux images et conteneurs Docker, les emplacements physiques des volumes sont assez simples. Les volumes sont situés à :

/var/lib/docker/volumes/

Par conséquent, vous pouvez exécuter la commande suivante pour connaître l'utilisation totale de l'espace disque du volume Docker sur votre système :

avimanyu @iborg-desktop:~$ sudo du -sh /var/lib/docker/volumes/
60K	/var/lib/docker/volumes/

Utilisation spécifique du volume de disque

Dans ce cas, il existe principalement deux types. L'un est des volumes Docker réguliers et l'autre est des montages liés.

Volumes Docker

Si vous recherchez les emplacements de volumes spécifiques, vous pouvez utiliser le docker volume ls d'abord la commande et vérifiez le nom ou l'ID du volume. Supposons, par exemple, que j'ai exécuté le conteneur alpin avec la commande suivante avec un volume :

docker run -ti -d --name alpine-container -v test-data:/var/lib/app/content alpine

Maintenant, un volume nommé test-data sera automatiquement créé. Créons maintenant un fichier nommé test.md à l'intérieur de cet emplacement :

$ docker exec alpine-container sh -c "touch /var/lib/app/content/test.md"

Vérifiez que le fichier a bien été créé :

$ docker exec -ti alpine-container sh
/ # ls /var/lib/app/content/
test.md
/ # exit

Lorsque vous exécutez docker volume ls , le volume nommé test-data serait listé :

$ docker volume ls
DRIVER    VOLUME NAME
local     d502589845f7ae7775474bc01d8295d9492a6c26db2ee2c941c27f3cac4449d1
local     e71ee3960cfef0a133d323d146a1382f3e25856480a727c037b5c81b5022cb1b
local     test-data

Enfin, vous pouvez confirmer l'emplacement réel du fichier sur votre système hôte :

$ sudo ls -l /var/lib/docker/volumes/test-data/_data
total 0
-rw-r--r-- 1 root root 0 Oct  6 23:20 test.md

Par conséquent, le chemin du volume monté est toujours situé dans un répertoire nommé _data dans le répertoire de volume respectif.

Ainsi, vous pouvez utiliser le du commande ici encore pour des volumes spécifiques ! :

[email protected]:~$ sudo du -sh /var/lib/docker/volumes/test-data/_data
4.0K	/var/lib/docker/volumes/test-data/_data

N'oubliez pas de noter le nom du volume chaque fois que vous souhaitez connaître l'espace utilisé par votre volume.

Lier les montages

Il s'agit de la seule exception dans Docker où vous devez utiliser une approche Linux pour surveiller l'utilisation de l'espace disque. Dans le même temps, il est toujours préférable d'arrêter d'abord les conteneurs en cours d'exécution.

$ mkdir /home/avimanyu/test-data
$ docker run -ti -d --name alpine-container -v /home/avimanyu/test-data:/var/lib/app/content alpine

Dans ce cas, un volume monté lié nommé test-data deviendra disponible côté conteneur sous la forme /var/lib/app/content .

[email protected]:~$ sudo du -sh /home/avimanyu/test-data
4.0K	/home/avimanyu/test-data

Vous pouvez également tester la même chose à l'intérieur du conteneur :

[email protected]:~$ sudo docker exec -ti alpine-container sh
/ # du -sh /var/lib/app/content
4.0K	/var/lib/app/content

Comme vous pouvez le voir, les deux tailles indiquées ci-dessus sont les mêmes car ce sont en fait des montages liés.

Les journaux Docker sur l'hôte sont toujours stockés dans des volumes. En utilisant la méthode décrite dans cette section, les utilisateurs peuvent également naviguer et le découvrir en examinant l'utilisation de l'espace disque des volumes Docker. Cela varie d'une application à l'autre et de l'emplacement des fichiers journaux dans les volumes d'application.

Conseils bonus

Sur la base de ce que vous avez appris jusqu'à présent, très évidemment, vous pouvez également utiliser la commande suivante pour récupérer l'utilisation du disque des images et des conteneurs :

sudo du -sh /var/lib/docker/overlay2

Les journaux Docker sur l'hôte sont toujours stockés dans des volumes. Un volume Docker généralement important indiquerait très probablement que les journaux se sont accumulés et sont gérés de manière inefficace.

Comment vérifier les journaux Docker [stockés ou en temps réel]Explorez et apprenez quelques façons intéressantes de faciliter la gestion des journaux sur Docker. Manuel LinuxAvimanyu Bandyopadhyay

En utilisant la méthode décrite dans la section des volumes de cet article, les utilisateurs peuvent également naviguer et atténuer cela en examinant l'utilisation de l'espace disque des volumes docker. Cela varie d'une application à l'autre et de l'emplacement des fichiers journaux dans les volumes d'application.

Résumé

Dans ce didacticiel, j'ai adopté une approche générique basée sur Linux pour vous montrer comment connaître l'occupation de l'espace disque des images, conteneurs et volumes Docker résidant sur votre serveur Linux au niveau de l'hôte. Vous avez également appris à le faire de la manière préférée (Docker).

Si vous souhaitez partager des commentaires, des commentaires ou des suggestions concernant cette approche, veuillez laisser vos réflexions dans la section des commentaires ci-dessous


Docker
  1. Comment supprimer toutes les images Docker, les conteneurs, les volumes, les réseaux et les ressources inutilisées

  2. Comment exporter et importer des conteneurs Docker

  3. Comment trouver de l'espace disque libre et analyser l'utilisation du disque ?

  4. Comment vérifier l'utilisation du disque du répertoire et l'utilisation de la bande passante ?

  5. Comment vérifier la taille totale de la RAM et l'utilisation de la mémoire sous Linux

Comment vérifier l'utilisation de l'espace disque sous Linux à l'aide de Ncdu

Comment vérifier l'utilisation de l'espace disque avec l'utilitaire Ncdu

Comment vérifier l'utilisation de l'espace disque du compte revendeur WHM ?

Comment nettoyer et supprimer des images Docker

Comment réduire la taille de l'image Docker dans les conteneurs Docker

Comment vérifier la taille des fichiers et du répertoire sous Linux