Ви видаляєте образи Docker, але їхні VHDX все ще займають місце: Як це виправити

Останнє оновлення: 10/11/2026

Ви використовуєте Docker Desktop у Windows? Тоді ви знаєте, що видалення образів, контейнерів та томів є поширеною проблемою. Це не обов'язково означає, що ви звільните місце на диску.Що відбувається? У цій публікації ми розповімо вам, чому ви видаляєте образи Docker, але їхні VHDX-файли все ще займають місце, і як це виправити назавжди.

Чому ви видаляєте образи Docker, але їхні VHDX-файли все ще займають місце?

Ви видаляєте образи Docker, але їхній VHDX все ще займає місце

Ви розумієте, що вам потрібно звільнити місце на диску C:, тому відкриваєте Docker і запускаєте docker system pruneКоманда обіцяє звільнити десятки гігабайт, і ви навіть бачите на екрані повідомлення «простору звільнено». Але коли ви перевіряєте Провідник Windows, Агрегат залишається таким же повнимПапка AppData все ще важить таку ж кількість разів, і це надокучливе попередження про "мало місця на диску" не зникає.

Дійсно, ви видаляєте образи Docker, але їхні VHDX-файли продовжують займати місце. Чому? Це не обов'язково помилка Docker чи збій у процесі очищення. Швидше, проблема пов'язана з... спосіб використання віртуальних дисків у Docker Desktop через WSL2Навіть якщо ви видалите дані, які він містить, файл VHDX не завжди автоматично зменшує свій розмір у Windows.

Docker Desktop у Windows та ілюзія видалення

ЗСЛ

Щоб зрозуміти проблему, корисно спочатку зрозуміти, як Docker Desktop працює у Windows. На відміну від Linux та macOS, де Docker працює на ядрі системи, Docker у Windows використовує WSL2 як легкий механізм віртуалізації. Це означає, що всі дані Docker зберігаються в незалежний віртуальний диск у форматі VHDX.

А ось і суть проблеми: файли VHDX є динамічними та розширюваними, але не скорочувальними. Що це означає? Це означає, що коли ви встановлюєте образ розміром 5 ГБ, файл VHDX збільшується на 5 ГБ; але зворотного процесу не відбувається, коли ви його видаляєте. Docker видаляє файли та звільняє логічні блоки у своєму середовищі Linux. Але, У Windows розмір файлу VHDX не зменшується автоматично..

Ексклюзивний вміст - натисніть тут  Чи сумісний HD Tune із зовнішніми жорсткими дисками?

Якщо й можна щось сказати на користь Microsoft, то це те, що Він спроектував це таким чином для доброї справиПодумайте: що станеться, якщо файл VHDX зменшуватиметься та знову збільшиться щоразу, коли ви видалятимете або створюватимете контейнер? Продуктивність SSD негативно позначиться через постійне зношування під час запису та накладні витрати на керування фрагментацією. Ось чому стиснення – це ручна операція, яку потрібно виконувати вручну.

VHDX продовжує займати місце навіть після видалення образів Docker: Рішення

Як автоматично перезапустити контейнер Docker, коли він перестає відповідати

Давайте розглянемо, як насправді відновити місце після видалення образів Docker на вашому ПК з Windows. Ми візьмемо файл VHDX і максимально стиснемо його. Але спочатку нам потрібно Переконайтеся, що у віртуальній машині Docker насправді немає корисних даних.

Почніть з відкриття терміналу (PowerShell або CMD) із запущеним Docker Desktop та виконайте команду команда глибокого очищення (docker system prune -a --volumesЗверніть увагу, що ця дія видалить усі образи, які наразі не використовуються запущеним контейнером, а також усі підключені томи. Рекомендується спочатку створити резервні копії всіх важливих даних або тестових баз даних на ваші томи.

Параметр -a (всі) видаляє всі невикористані зображення, а не лише "завислі" (звисаючий). І параметр --volumes Очистіть осиротілі томи. Після запуску ви побачите повідомлення про те, скільки місця було «відновлено». Це простір, що звільнився у VHDXАле як ми вже казали, файл у Windows залишиться незмінним.

Ексклюзивний вміст - натисніть тут  Кращі програми для малювання на Mac

Зупинити Docker Desktop та WSL 2

Цей другий крок є вирішальним: ви повинні Зупинити Docker Desktop та всі відкриті екземпляри WSLЯкщо ви цього не зробите та спробуєте запустити стиснутий файл, ви отримаєте помилку «файл заблоковано» або «доступ заборонено». Ви дійсно видалите образи Docker лише тоді, коли виконали цей порядок:

  1. По-перше, Повністю закрийте робочий стіл DockerКлацніть правою кнопкою миші на значку в системному треї та виберіть «Вийти з Docker Desktop».
  2. По-друге, відкрийте вікно PowerShell від імені адміністратора та виконати команду wsl --shutdownЦе вимикає всі запущені підсистеми Linux.

Стиснення VHDX (Optimize-VHD або Diskpart)

Ви видаляєте образи Docker, але VHDX все ще займає місце? Більше ні! Тепер, коли файл VHDX вільний від блокувань, у вас є два способи його скороченняЦе залежатиме від версії Windows, яку ви використовуєте.

Якщо у вас версія "Pro" або вищеНайпростіший спосіб – скористатися командлетом PowerShell, який постачається з модулем Hyper-V. Процес може тривати від кількох секунд до кількох хвилин, залежно від розміру файлу. У тому ж вікні PowerShell з правами адміністратора виконайте:

Optimize-VHD -Path "$env:LOCALAPPDATA\Docker\wsl\disk\docker_data.vhdx" -Mode Full

Одна деталь: Шлях може дещо відрізнятися залежно від вашої версії DockerЯкщо команда не виконується, оскільки не вдається знайти файл, перевірте точний шлях у C:\Users\TuUsuario\AppData\Local\Docker\wsl\У старіших версіях файл міг називатися ext4.vhdx і бути в папці data скоріше disk.

З іншого боку, якщо у вас Windows Home, команда Optimize-VHD Він недоступний, оскільки модуль Hyper-V неможливо встановити. У цьому випадку можна скористатися інструментом командного рядка. diskpartВідкрийте вікно командного рядка або PowerShell від імені адміністратора та виконайте такі дії:

  1. Пише diskpart і натисніть клавішу Enter.
  2. Виконати select vdisk file="C:\Users\TuUsuario\AppData\Local\Docker\wsl\disk\docker_data.vhdx" (Переконайтеся, що ви вказали правильний шлях і лапки).
  3. Пише attach vdisk readonly щоб змонтувати диск у режимі лише для читання, щоб ви могли з ним працювати.
  4. Тепер пишіть compact vdiskDiskpart проаналізує файл і видалить невикористані блоки.
  5. Коли закінчиш, напиши detach vdisk щоб безпечно його розібрати.
  6. Нарешті, напишіть exit щоб вийти з diskpart.
Ексклюзивний вміст - натисніть тут  Як призначити літеру диска програмі Paragon Backup & Recovery Home?

Видалення образів Docker та VHDX зменшує їхній розмір.

Робочий стіл Docker у Windows

Готово! Тепер ви видалили образи Docker, і VHDX дійсно зменшить свій розмір. Після завершення процесу поверніться до Провідника Windows і перевірте розмір файлу. docker_data.vhdxВи повинні побачити різке зниження. В іншому випадку це означає, що цей простір займали реальні дані.Тож нам потрібно ще раз перевірити docker system df щоб побачити, що займає місце.

Для більшості людей цього методу ручного стиснення достатньо, щоб фактично звільнити місце. Вам просто потрібно дотримуватися наступного порядку дій: Внутрішнє очищення – вимкніть WSL – стисніть за допомогою Optimize-VHD або DiskpartТепер ви можете легко та безпечно відновити десятки гігабайт за лічені хвилини.