hub español desde community cero linux docker lxc volumes device-mapper

linux - español - Docker: cómo analizar el uso del disco de un contenedor?



docker manual (8)

(Esta respuesta no es útil, pero dejarla aquí ya que algunos de los comentarios pueden ser)

docker images mostrarán el "tamaño virtual", es decir, cuánto en total, incluidas todas las capas inferiores. Entonces, un recuento doble si tiene contenedores que comparten la misma imagen base.

documentation

Estuve buscando por un tiempo, pero no pude encontrar una forma de analizar el uso del disco de un contenedor / volumen Docker.

Veo que Docker toma 12GB 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 ejecutando ''df -h'' para analizar el uso del disco. Parece estar funcionando, pero no con contenedores que usan ''volúmenes-desde''.

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

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

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

Muchas gracias,


Después de 1.13.0, Docker incluye un nuevo docker system df acoplador de comandos docker system df para mostrar el uso del disco acoplable.

$ 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 -v


La parte del volumen ya no funciona, así que si alguien está interesado, simplemente modifico un poco el guión anterior:

for d in `docker ps | awk ''{print $1}'' | tail -n +2`; do d_name=`docker inspect -f {{.Name}} $d` echo "=========================================================" echo "$d_name ($d) container size:" sudo du -d 2 -h /var/lib/docker/aufs | grep `docker inspect -f "{{.Id}}" $d` echo "$d_name ($d) volumes:" for mount in `docker inspect -f "{{range .Mounts}} {{.Source}}:{{.Destination}} {{end}}" $d`; do size=`echo $mount | cut -d'':'' -f1 | sudo xargs du -d 0 -h` mnt=`echo $mount | cut -d'':'' -f2` echo "$size mounted on $mnt" done done


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

docker ps -s


Publicar esto como respuesta porque mis comentarios anteriores se ocultaron:

Enumera 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: enumera 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'' de acuerdo con su sistema de archivos Docker (por ejemplo, ''aufs'')


Puedes usar

docker history IMAGE_ID

para ver cómo se distribuye el tamaño de la imagen entre sus diversos subcomponentes.



Tenga en cuenta que docker ps --size puede ser un comando costoso, tardando más de unos minutos en completarse. Lo mismo se aplica a las solicitudes API de lista de contenedores con size=1 . Es mejor no ejecutarlo con demasiada frecuencia.

Eche un vistazo a las alternatives que du -hs , incluida la opción du -hs para el directorio de volumen persistente docker.