Есть ли способ увидеть использование диска контейнера в Docker для Windows? - PullRequest
2 голосов
/ 27 апреля 2019

Мне любопытно, есть ли способ узнать, сколько дискового пространства использует работающий контейнер Windows в дополнение к слоям, которые являются частью образа контейнера.В основном, насколько «вырос» контейнер с момента его создания.

В Linux (или Linux-контейнерах, работающих в HyperV), это будет docker ps -s, однако эта команда не реализована в контейнерах Windows.Я также пытался docker system df -v, но также не реализовано.Может быть, есть хакерский способ, если смотреть на определенный файл прямо на диске или что-то в этом роде?

Ответы [ 2 ]

1 голос
/ 11 мая 2019

Я проверил на Windows 10 1809, работающей с контейнерами не-HyperV (изоляция процесса), я почти уверен, что то же самое для контейнеров Windows Server.

Данные, кажется, хранятся в:

C:\ProgramData\Docker\windowsfilter\{ContainerId}

Существует прямая ссылка на папку в docker inspect {Id} в GraphDriver\Data\dir.

Папка содержит файл sandbox.vhdx, который представляется «записываемым слоем» каждого контейнера.

Мне не удалось открыть его и просмотреть файловую систему, но если я запишу некоторые данные в контейнер, я могу заставить файл расти:

  docker exec <Id> powershell get-childitem c:\ -recurse `> c:\windows\temp\test.txt

Уровень сохраняется, когда контейнер остановлен/ restarted, и папка удаляется, когда контейнер rm ed.

Во время исследования я увидел открытый PR в moby для улучшения очистки этой папки.

1 голос
/ 27 апреля 2019

Я использую Docker для Windows (Docker Desktop 2.0.0.3), и docker ps -s фактически реализован.

CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS               NAMES               SIZE
81acb264aa0f        httpd               "httpd-foreground"   6 minutes ago       Up 6 minutes        80/tcp              httpd               2B (virtual 132MB)

Docker для Windows работает на MobyLinuxVM.Вы можете получить доступ к каталогам виртуальной машины и докера:

docker run --privileged -it -v /var/run/docker.sock:/var/run/docker.sock jongallant/ubuntu-docker-client
root@8b58d2fbe186:/# docker run --net=host --ipc=host --uts=host --pid=host –it --security-opt=seccomp=unconfined --privileged --rm -v /:/host alpine /bin/sh
root@8b58d2fbe186:/# chroot /host

Теперь вы можете получить доступ к папкам докера в /var/lib/docker, как в Linux, и проверить размеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...