Docker-как анализировать использование диска контейнера?



Я искал некоторое время, но не смог найти способ проанализировать использование диска контейнера / Тома Docker.



Я вижу, что докер занимает 12 ГБ моей файловой системы:



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


но, как я знаю, как это распределяется по контейнерам?



Я попытался подключиться к контейнерам, запустив (новая команда v1.3)



docker exec -it <container_name> bash


а затем запуск 'df-h' для анализа использования диска. Кажется, это работает, но не с помощью контейнеры, которые используют 'volumes-from'.



например, я использую контейнер только для данных для MongoDB, называемый "mongo-data".



когда я запускаю docker run -it --volumes-from mongo-data busybox, а потом df -h внутри контейнера, он говорит, что файловая система смонтирована на /data/db (мой контейнер только для данных "mongo-data") использует 11.3 G, но когда я делаю du -h /data/db, Он говорит, что он использует только 2.1 г.



Итак, как я могу проанализировать использование контейнера/Тома диска? Или, в моем случае, как мне узнать контейнер " mongo-data размер?



большое спасибо,

563   8  

8 ответов:

чтобы увидеть размер ваших контейнеров, вы можете использовать

после 1.13.0, Докер включает новую команду docker system df чтобы показать использование диска 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%)

чтобы показать более подробную информацию об использовании пространства

$ docker system df -v

размещение этого в качестве ответа, потому что мои комментарии выше были скрыты:

перечислите размер контейнера:

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

перечислите размеры объемов контейнера:

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

изменить: Перечислите размеры и объемы всех запущенных контейнеров:

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

Примечание: измените 'devicemapper' в соответствии с вашей файловой системой Docker (например, 'aufs')

часть Тома больше не работает, так что если кто-то insterested я просто изменить выше скрипт немного:

for d in `docker ps | awk '{print }' | 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

(этот ответ не полезен, но оставляя его здесь, так как некоторые комментарии могут быть)

docker images покажет "виртуальный размер", т. е. сколько всего, включая все нижние слои. Так что некоторые двойной подсчет, если у вас есть контейнеры, которые разделяют одно и то же базовое изображение.

документация

Если вы хотите уменьшить размер многослойных изображений, я могу порекомендовать Джейсона Уайлдера docker-squash утилиты. Получить его из GitHub здесь:https://github.com/jwilder/docker-squash

имейте в виду, что докер ps --size может быть дорогостоящей командой, требующей более нескольких минут для завершения. То же самое относится к запросам API списка контейнеров с size=1. Лучше не запускать его слишком часто.

посмотри варианты мы составили, в том числе du -hs опция для каталога постоянных томов docker.

можно использовать

docker history IMAGE_ID

чтобы увидеть, как размер изображения распределяется между его различными субкомпонентами.

Comments

    Ничего не найдено.