GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Cómo verificar el uso de espacio en disco para imágenes, contenedores y volúmenes de Docker

¿Se pregunta cuánto espacio consume Docker en su sistema Linux?

Principalmente, todas las imágenes, contenedores y otras entidades relacionadas de Docker se encuentran en /var/lib/docker . Puede comprobar el tamaño de este directorio y obtener el espacio total en disco utilizado por Docker:

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

Pero eso no es muy descriptivo y es posible que tenga que ir más allá en este directorio para ver qué componente usa qué espacio.

Afortunadamente, Docker ha proporcionado herramientas para obtener esta información de una manera más útil.

Comprobación del uso del espacio en disco de Docker [The Docker Way]

La forma "Docker" más básica de saber cuánto espacio están utilizando imágenes, contenedores, volúmenes locales o caché de compilación es:

docker system df

Cuando ejecute este comando (utilice sudo si es necesario), obtiene toda la información de uso del disco agrupada por componentes de 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

Esto definitivamente es mejor que mirar el tamaño total de /var/lib/docker. Puede ver cuánto espacio consumen las imágenes, los contenedores y los volúmenes.

Sin embargo, esto todavía proporciona una imagen clara de qué imagen o volumen ocupa más espacio.

En realidad, lo hace. El docker system df el comando tiene la opción detallada -v que da todos estos detalles.

docker system df -v

Aquí está la salida detallada:

[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

Eso es bueno, ¿verdad? También hay otras formas.

Comprobación de los tamaños de imagen de la ventana acoplable

Si solo desea ver las imágenes de Docker y sus tamaños, también puede usar este comando:

docker image ls

Enumera todas las imágenes de Docker en su sistema con algunos detalles que incluyen el tamaño:

[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

Comprobación de los tamaños de contenedores en ejecución

Del mismo modo, si desea conocer el tamaño de los contenedores Docker en ejecución, puede usar el comando docker ps:

docker ps --size

Debería ver una columna TAMAÑO agregada a la salida del comando:

[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)

¿Notas cómo dice 0B y luego muestra 5.61 MB virtuales? El tamaño virtual incluye la imagen subyacente compartida.

Volvamos al enfoque de Linux de manera más específica, con la imagen y el contenedor de Alpine como ejemplo práctico.

Uso de comandos estándar de Linux para analizar el uso del espacio en disco de Docker

Siempre que use el docker pull comando o ejecutar docker-compose up -d para preparar el lanzamiento de aplicaciones, así es como busca el uso del espacio de la imagen, en realidad almacenado en un servidor Ubuntu 20.04:

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

Aquí, Overlay2 es el controlador de almacenamiento Docker predeterminado en Ubuntu. Puede confirmar esto ejecutando docker info comando y buscando el controlador de almacenamiento:

Storage Driver: overlay2

Si esto es diferente al suyo, entonces está usando un controlador de almacenamiento diferente para Docker. Del mismo modo, la ubicación del directorio se nombraría según el mismo controlador de almacenamiento. La disponibilidad del controlador de almacenamiento depende del soporte del kernel.

Uso de disco de imagen específico

Si está buscando las ubicaciones de imágenes específicas, puede usar el comando de inspección de Docker para la imagen extraída. Digamos, por ejemplo, que saqué la imagen alpina con docker pull alpine . Ejecute el siguiente comando para inspeccionarlo:

$ docker inspect alpine

Una vez que ejecute el comando, notará tres campos dentro de Data subsección bajo GraphDriver :

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

...

Según la información anterior, puede ver que (mencionado anteriormente en el du sintaxis del comando) en este caso es 64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e .

Aquí, puede ejecutar el siguiente comando para revelar la cantidad de espacio que utiliza la imagen de Alpine:

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

Del mismo modo, al igual que las imágenes, los contenedores también se almacenan dentro del mismo directorio basado en el controlador de almacenamiento.

/var/lib/docker/overlay2

Uso de disco de contenedor específico

Si está buscando las ubicaciones de contenedores específicos, puede volver a utilizar inspect comando en Docker para el contenedor en ejecución. Digamos, por ejemplo, he ejecutado el contenedor alpino con docker run -ti -d alpine . Cuando ejecutas docker ps , verás que se está ejecutando:

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

Aquí, el contenedor ha sido nombrado aleatoriamente confident_banzai . Así que vamos a inspeccionarlo:

$ docker inspect confident_banzai

Una vez que ejecute el comando anterior, notará los cuatro campos mencionados anteriormente dentro de Data subsección bajo GraphDriver . Estas ubicaciones son donde los datos del contenedor se almacenan físicamente en su sistema host tal como vio para las imágenes:

...
        "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"
        },
...

Ahora puedes usar el du comando de nuevo:

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

A diferencia de las imágenes y los contenedores de Docker, las ubicaciones físicas de los volúmenes son bastante sencillas. Los volúmenes se encuentran en:

/var/lib/docker/volumes/

Por lo tanto, puede ejecutar el siguiente comando para conocer el uso completo del espacio en disco del volumen Docker en su sistema:

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

Uso de disco de volumen específico

En este caso, hay dos tipos principalmente. Uno son los volúmenes normales de Docker y el otro son los montajes de enlace.

Volúmenes de Docker

Si está buscando las ubicaciones de volúmenes específicos, puede usar docker volume ls Comando primero y verifique el nombre o ID del volumen. Digamos, por ejemplo, he ejecutado el contenedor alpino con el siguiente comando con un volumen:

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

Ahora, un volumen llamado test-data se creará automáticamente. Ahora vamos a crear un archivo llamado test.md dentro de esta ubicación:

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

Verifique que el archivo haya sido creado:

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

Cuando ejecutas docker volume ls , el volumen llamado test-data estaría en la lista:

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

Finalmente, puede confirmar la ubicación real del archivo en su sistema host:

$ 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

Por lo tanto, la ruta del volumen montado siempre se encuentra dentro de un directorio llamado _data dentro del directorio de volumen respectivo.

Entonces, puedes usar el du ¡comando aquí de nuevo para volúmenes específicos!:

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

Recuerde siempre anotar el nombre del volumen cada vez que desee averiguar cuánto espacio está usando su volumen.

Monturas enlazadas

Esta es la única excepción en Docker donde debe usar un enfoque de Linux para monitorear el uso del espacio en disco. Al mismo tiempo, siempre es preferible detener primero los contenedores en funcionamiento.

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

En este caso, un volumen montado en enlace llamado test-data estará disponible en el lado del contenedor como /var/lib/app/content .

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

También puedes probar lo mismo dentro del contenedor:

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

Como puede ver, los dos tamaños informados anteriormente son iguales porque en realidad son monturas vinculantes.

Los registros de Docker en el host siempre se almacenan en volúmenes. Usando la forma descrita en esta sección, los usuarios también pueden navegar y averiguarlo observando el uso del espacio en disco de los volúmenes de la ventana acoplable. Esto varía según la aplicación y la ubicación de los archivos de registro en los volúmenes de la aplicación.

Consejos adicionales

Según lo que aprendió hasta ahora, obviamente, también puede usar el siguiente comando para obtener el uso del disco de imágenes y contenedores juntos:

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

Los registros de Docker en el host siempre se almacenan en volúmenes. Un volumen de Docker generalmente grande probablemente indicaría que los registros se han estado acumulando y se están administrando de manera ineficiente.

Cómo verificar los registros de Docker [almacenados o en tiempo real]Explore y aprenda algunas formas interesantes de facilitar la administración de registros en Docker. Manual de LinuxAvimanyu Bandyopadhyay

Usando la forma descrita en la sección de volúmenes de este artículo, los usuarios también pueden navegar y mitigar esto observando el uso del espacio en disco de los volúmenes de Docker. Esto varía según la aplicación y la ubicación de los archivos de registro en los volúmenes de la aplicación.

Resumen

En este tutorial, adopté un enfoque genérico basado en Linux para mostrarle cómo averiguar la ocupación de espacio en disco de imágenes, contenedores y volúmenes de Docker que residen en su servidor Linux a nivel de host. También aprendió cómo hacerlo de la forma preferida (Docker).

Si desea compartir algún comentario, comentario o sugerencia sobre este enfoque, deje sus opiniones en la sección de comentarios a continuación


Docker
  1. Cómo eliminar todas las imágenes, contenedores, volúmenes, redes y recursos no utilizados de Docker

  2. Cómo usar imágenes, contenedores y archivos Docker en profundidad

  3. Cómo instalar Docker y ejecutar contenedores Docker en Ubuntu

  4. Cómo verificar el tamaño total de RAM y el uso de memoria en Linux

  5. ¿Cómo verificar el espacio en disco en Ubuntu 20.04 y 20.10?

Cómo verificar el uso del espacio en disco en Linux usando Ncdu

Cómo verificar el uso del espacio en disco con la utilidad Ncdu

¿Cómo verificar el uso de espacio en disco de la cuenta de revendedor de WHM?

Cómo limpiar y eliminar imágenes de Docker

Cómo reducir el tamaño de la imagen de Docker en los contenedores de Docker

Cómo verificar el tamaño de los archivos y directorios en Linux