Где на самом деле прячутся гигабайты
Docker Desktop на WSL2 хранит всё — образы, контейнеры, тома, кэш сборок — в специальных дистрибутивах WSL, каждый из которых лежит на C: одним файлом динамического VHDX. Каждый pull добавляет слои, каждая сборка — кэш, но удаление освобождает место только внутри Linux-файловой системы: файл на хосте остаётся на пиковом уровне. Ваши собственные Ubuntu или Debian устраивают тот же трюк со своим ext4.vhdx, и в охоте за «толстыми папками» ничего этого не видно, потому что для Windows это пара непрозрачных файлов.
- docker-desktop-data (старые версии) или docker_data.vhdx (новые): главный пожиратель на 30–80 ГБ в %LOCALAPPDATA%\Docker\wsl — образы, контейнеры, тома, кэш сборок
- docker-desktop: небольшой системный дистрибутив, в котором крутится сам движок Docker
- Ваши дистрибутивы WSL2: у каждого свой ext4.vhdx в %LOCALAPPDATA%\Packages\...\LocalState
- Кэш сборок: docker builder хранит промежуточные слои, даже если финальный образ удалён
- Висячие образы и остановленные контейнеры: осиротевшие слои от прерванных сборок и загрузок
- Анонимные тома: молча создаются при каждой сборке через compose и переживают даже docker image prune
Сначала чистим внутри: ужимать грязный диск — пустая работа
Ужимать VHDX, набитый мёртвыми образами, бессмысленно: получится файл поменьше, который через неделю снова разрастётся. Поэтому начинайте внутри: docker system df покажет, что реально занимают образы, контейнеры, тома и кэш, и цифры обычно удивляют. docker system prune -a сносит неиспользуемые образы и остановленные контейнеры, флаг --volumes добавляет осиротевшие тома — убедитесь, что не убиваете данные, которые вам дороги. Затем docker builder prune чистит кэш сборок, раздуваемый повторными пересборками; и только когда docker system df показывает приемлемую цифру, есть смысл трогать файл на хосте.
Потом ужимаем диск: три штатных способа
Сначала wsl --shutdown, иначе файл занят работающими контейнерами и дистрибутивами. На свежих сборках WSL команда wsl --manage <дистрибутив> --set-sparse true помечает VHDX разреженным, и Windows забирает свободные блоки; на старых версиях надёжный путь — экспорт и импорт: wsl --export в .tar, wsl --unregister, wsl --import в новую папку, и файл пересоздаётся под реальный размер данных. Docker Desktop умеет и целиком переехать на другой диск — Settings > Resources > Advanced, данные мигрируют автоматически; это честное решение, когда C: просто мал для вашей работы. Заодно ограничьте рост: на той же странице настроек есть лимит размера диска, а ежемесячная привычка смотреть docker system df удержит вас в рамках.
Вопросы и ответы
Почему Docker Desktop занимает так много места на диске?
Docker держит все образы, слои, тома и кэш сборок в динамическом VHDX, который растёт по запросу и сам не сжимается. Посмотрите разбивку через docker system df, почистите лишнее, а затем уплотните диск.
Как уменьшить файл VHDX от Docker в WSL2?
Выполните wsl --shutdown, затем пометьте диск разреженным: wsl --manage <дистрибутив> --set-sparse true. Либо экспортируйте дистрибутив в .tar, удалите его и импортируйте обратно — новый VHDX совпадёт с реальным размером данных.
Понятно до покупки: что входит в лицензию
Разовый 30-минутный триал даёт доступ к базовым инструментам. Возможности с меткой PRO остаются закрыты до активации платной лицензии.
Читайте также
Написать нам: [email protected]