Cómo analizar el uso del disco de un contenedor Docker

Resuelto AlonL asked hace 9 años • 12 respuestas

Puedo ver que Docker ocupa 12 GB de mi sistema de archivos:

2.7G    /var/lib/docker/vfs/dir
2.7G    /var/lib/docker/vfs
2.8G    /var/lib/docker/devicemapper/mnt
6.3G    /var/lib/docker/devicemapper/devicemapper
9.1G    /var/lib/docker/devicemapper
12G     /var/lib/docker

Pero, ¿cómo sé cómo se distribuye esto en los contenedores?

Intenté conectarme a los contenedores ejecutando (el nuevo comando v1.3)

docker exec -it <container_name> bash

y luego ejecutar df -hpara analizar el uso del disco. Parece estar funcionando, pero no con contenedores que utilizan "volúmenes de".

Por ejemplo, utilizo un contenedor de sólo datos para MongoDB, llamado 'mongo-data'.

Cuando ejecuto docker run -it --volumes-from mongo-data busybox, y luego df -hdentro del contenedor, dice que el sistema de archivos montado en /data/db(mi contenedor de solo datos 'mongo-data') usa 11.3G, pero cuando lo hago du -h /data/db, dice que usa solo 2.1G.

Entonces, ¿cómo analizo el uso del disco de un contenedor/volumen? O, en mi caso, ¿cómo puedo saber el tamaño del contenedor 'mongo-data'?

AlonL avatar Nov 05 '14 16:11 AlonL
Aceptado

Para ver el tamaño de archivo de sus contenedores, puede usar el --sizeargumento de docker ps:

docker ps --size
Maxime avatar Oct 26 '2015 11:10 Maxime

Después de la versión 1.13.0, Docker incluye un nuevo comando docker system dfpara mostrar el uso del disco de Docker.

$ docker system df
TYPE            TOTAL        ACTIVE     SIZE        RECLAIMABLE
Images          5            1          2.777 GB    2.647 GB (95%)
Containers      1            1          0 B         0B
Local Volumes   4            1          3.207 GB    2.261 (70%)

Para mostrar información más detallada sobre el uso del espacio:

$ docker system df --verbose
Hemerson Varela avatar Jan 25 '2017 18:01 Hemerson Varela

Publicar esto como respuesta porque mis comentarios anteriores se ocultaron:

Enumere el tamaño de un contenedor:

du -d 2 -h /var/lib/docker/devicemapper | grep `docker inspect -f "{{.Id}}" <container_name>`

Enumere los tamaños de los volúmenes de un contenedor:

docker inspect -f "{{.Volumes}}" <container_name> | sed 's/map\[//' | sed 's/]//' | tr ' ' '\n' | sed 's/.*://' | xargs sudo du -d 1 -h

Editar: enumere todos los tamaños y volúmenes de los contenedores en ejecución:

for d in `docker ps -q`; do
    d_name=`docker inspect -f {{.Name}} $d`
    echo "========================================================="
    echo "$d_name ($d) container size:"
    sudo du -d 2 -h /var/lib/docker/devicemapper | grep `docker inspect -f "{{.Id}}" $d`
    echo "$d_name ($d) volumes:"
    docker inspect -f "{{.Volumes}}" $d | sed 's/map\[//' | sed 's/]//' | tr ' ' '\n' | sed 's/.*://' | xargs sudo du -d 1 -h
done

NOTA: Cambie 'devicemapper' según su sistema de archivos Docker (por ejemplo, 'aufs')

AlonL avatar Nov 26 '2014 17:11 AlonL