На самом деле драйвер хранилища докера уже дает ответ.
Взяв overlay2
драйвер хранилища , который является драйвером по умолчанию в большинстве дистрибутивов, например, мы видим, чтоcontainer layer
, где хранятся все данные, записанные в контейнер, хранится в отдельной папке:
Источник: Какработает оверлейный драйвер
Общий объем данных, записанных в слой контейнера
Для полного обзора того, что было записано в контейнер, нам достаточно взглянуть на upperdir
, который называется diff
в файловой системе резервного копирования (хоста).Путь к папке diff
можно найти с помощью
docker container inspect <container_name> --format='{{.GraphDriver.Data.UpperDir}}' # or
docker container inspect <container_name> | grep UpperDir
При настройках по умолчанию этот путь указывает на /var/lib/docker/overlay2/
.Обратите внимание, что доступ к «внутренней работе» докера требует root
доступа на хосте, и это хорошая идея, чтобы не делать никаких записей в эти папки.
Теперь, когда у нас есть папка в файле поддержкиСистема, мы можем просто du
в деталях, как мы хотим.В качестве тестового примера я использовал образ alpine , который запускает скрипт, который каждые 10 секунд записывает фиктивный файл размером 10 МБ.
root@testbox:/var/lib/docker/overlay2/83a825d...# du -h -d 1
8.0K ./work
216M ./diff
216M .
root@testbox:/var/lib/docker/overlay2/83a825d...# ll diff/tmp
total 220164
drwxrwxrwt 2 root root 4096 Okt 21 22:57 ./
drwxr-xr-x 3 root root 4096 Okt 21 22:53 ../
-rw-r--r-- 1 root root 9266613 Okt 21 22:53 dummy0.tar.gz
-rw-r--r-- 1 root root 9266613 Okt 21 22:55 dummy10.tar.gz
-rw-r--r-- 1 root root 9266613 Okt 21 22:55 dummy11.tar.gz
[...]
Следовательно, просматривая все файлы ипапки, записанные в контейнер, так же просты, как и в любой другой каталог