Де насправді ховаються гігабайти
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]