Некоторое время назад мне было интересно то же самое.Это не ошибка, это особенность: -)
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 и что делает его великолепным!