Разница между реальным и показанным при использовании Docker System df Disc - PullRequest
0 голосов
/ 29 мая 2018

У меня есть докер в версии 18.03.1-ce, поддерживающий команду docker system df.Его вывод:

Images space usage:

REPOSITORY                               TAG                 IMAGE ID            CREATED ago             SIZE                SHARED SIZE         UNIQUE SiZE         CONTAINERS
registry.gitlab.com/precisesale/app      latest              b7833546c2cf        About an hour ago ago   252.1MB             123.8MB             128.4MB             1
healthdiary/app                          latest              565c6d3906e6        2 days ago ago          312.2MB             123.8MB             188.4MB             1
mongo                                    latest              f93ff881751f        5 days ago ago          367.6MB             0B                  367.6MB             2
nginx                                    latest              b175e7467d66        6 weeks ago ago         108.9MB             0B                  108.9MB             1
jwilder/docker-gen                       latest              8959ee34c769        2 months ago ago        19.91MB             4.148MB             15.77MB             1
jrcs/letsencrypt-nginx-proxy-companion   latest              17939ceb7a52        2 months ago ago        86.86MB             4.148MB             82.71MB             1

Containers space usage:

CONTAINER ID        IMAGE                                    COMMAND                  LOCAL VOLUMES       SIZE                CREATED ago         STATUS              NAMES
c20dc3438552        healthdiary/app                          "./entrypoint.sh nod…"   0                   0B                  8 minutes ago ago   Up 8 minutes        healthdiary_app_1
bf8c4307dcbb        mongo:latest                             "docker-entrypoint.s…"   1                   0B                  8 minutes ago ago   Up 8 minutes        healthdiary_mongo_1
47fced8d18fe        registry.gitlab.com/precisesale/app      "./entrypoint.sh nod…"   0                   0B                  9 minutes ago ago   Up 9 minutes        precisesale_app_1
597d97d5c1fa        mongo:latest                             "docker-entrypoint.s…"   1                   0B                  9 minutes ago ago   Up 9 minutes        precisesale_db_1
b5bb14faa910        jwilder/docker-gen                       "/usr/local/bin/dock…"   0                   0B                  7 hours ago ago     Up 19 minutes       nginx-gen
8eee2bee084a        nginx                                    "nginx -g 'daemon of…"   0                   2B                  7 hours ago ago     Up 19 minutes       nginx-web
6b8b0cd5d938        jrcs/letsencrypt-nginx-proxy-companion   "/bin/bash /app/entr…"   0                   1.66kB              7 hours ago ago     Up 19 minutes       nginx-letsencrypt

Local Volumes space usage:

VOLUME NAME                                                        LINKS               SIZE
0a40fac6ca98e776dad972c8193362a51a485b3305979e58996545d97310a3c7   1                   0B
929b0b88849ad4d390efd4666e6a0e5f82e0e6dd34f7a09f609de90b190e6148   1                   0B

Build cache usage: 0B

Даже если я не принимаю во внимание экономию от общего пространства от двух первых контейнеров, суммарный размер равен 1147.5 MB

Но если я измеряю размер наложения докера 2 на дискеdu Я получаю

du -hs /var/lib/docker/overlay2/
2.7G    /var/lib/docker/overlay2/

Где причина разницы в размерах контейнеров, измеряемых docker system df и du?

1 Ответ

0 голосов
/ 24 сентября 2018

Некоторое время назад мне было интересно то же самое.Это не ошибка, это особенность: -)

du -sh /var/lib/docker/overlay2

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

Вы можете увидеть фактический размер дискового пространства, изучив только папки diff, такие как:

du -shc /var/lib/docker/overlay2/*/diff

. Вы можете проверить это в своей среде следующим образом: run

df -h /dev/sd*
du -shc /var/lib/docker/overlay2/*/diff
du -sh /var/lib/docker/overlay2

Теперь запустите контейнеры по 20 центов иобратите внимание на то, что изменилось:

for i in {1..20}; do docker run -itd centos bash; done
df -h /dev/sd*
du -shc /var/lib/docker/overlay2/*/diff
du -sh /var/lib/docker/overlay2

Вы можете видеть, что фактическое выделение диска (команда df) всего на 200 МБ больше, чем раньше, но «du» во всей папке выдает распределение 4.2G.«Du» в папках «diff» показывает 212M, что правильно.

Вот как работает Docker и что делает его великолепным!

...