Как уменьшить размер WSL2 и освободить место на диске для docker

WSL2 и Docker съедают место на диске? Узнайте, как сжать виртуальный диск (VHDX), очистить кэш контейнеров и образов, а также вернуть десятки гигабайт. Подробное руководство с командами PowerShell и WSL2.
WSL2 — это мощный инструмент для разработчиков, но он может незаметно "съедать" гигабайты места на диске. Разберёмся, почему это происходит и как вернуть потерянное пространство без вреда для системы.

1. Что такое WSL2 и почему он занимает так много места?#

Windows Subsystem for Linux 2 (WSL2) — это технология Microsoft, позволяющая запускать полноценный Linux внутри Windows. В отличие от WSL1, здесь используется виртуальная машина с реальным ядром Linux.
Главная проблема: WSL2 хранит все данные в динамическом виртуальном диске (ext4.vhdx), который автоматически расширяется, но не сжимается обратно. Docker, кэш пакетов и временные файлы раздувают его до десятков гигабайт.

2. Как найти docker виртуальный диск WSL2?#

Перед очисткой нужно точно определить, где лежит файл vhdx. Проще всего сделать это через PowerShell:

Powershell

1Get-ChildItem -Path $env:LOCALAPPDATA -Filter *.vhdx -Recurse -File -ErrorAction SilentlyContinue | Select-Object FullName
Результат покажет путь вроде:
C:\Users\ВашеИмя\AppData\Local\Docker\wsl\data\ext4.vhdx
(Если используете Docker Desktop, путь может быть другим — например, в папке Docker\wsl.)

3. Как остановить WSL2 перед очисткой?#

Важно! Перед работой с диском WSL2 нужно его отключить, иначе система не даст сжать файл.

Вариант 1: Через PowerShell (администратор)#

Powershell

1# Проверить работающие дистрибутивы 2wsl --list --running 3wsl --terminate Ubuntu 4# Остановить все 5wsl --shutdown 6 7# Дополнительно: завершить Docker (если используется) 8taskkill /IM "docker.exe" /F

Вариант 2: Вручную#

  • Закройте Docker Desktop.
  • Проверьте Диспетчер задач → нет ли процессов wsl.exe или docker.

4. Очистка мусора внутри Linux#

Перед сжатием диска удалите ненужные файлы из самого WSL2:
  1. 1
    Откройте терминал Linux (например, Ubuntu):

    Bash

    1# Очистка кэша пакетов 2sudo apt-get clean 3 4# Удаление ненужных зависимостей 5sudo apt-get autoremove 6 7# Дополнительно: ручная очистка временных файлов 8sudo rm -rf /tmp/*
  2. 2
    Для Docker-пользователей:

    Bash

    1# Удаление неиспользуемых образов и контейнеров 2docker system prune -a --volumes

5. Сжатие виртуального диска (VHDX)#

Теперь главное — уменьшить размер файла .vhdx. Делается это через DiskPart:
  1. 1Откройте PowerShell от администратора и выполните:

    Powershell

    1# Перейти в DiskPart 2diskpart 3# Выбрать виртуальный диск 4select vdisk file="C:\путь\к\вашему\ext4.vhdx" 5attach vdisk 6# Сжать диск 7compact vdisk 8# Отключить диск 9detach vdisk
    Описание
    Описание
Закройте DiskPart (exit). Посмотрите свойства файла .vhdx — он должен уменьшиться. Результат: В моём случае освободилось 76 ГБ — почти как новый SSD! Повторяйте процедуру раз в 2-3 месяца, чтобы WSL2 не захламлял диск.

P.S. Если остались вопросы — пишите в комментарии. Помогу разобраться! 🚀

Был ли этот материал полезен?

Авторы файла

Информацию подготовили

Автор текста

Fullstack веб-разработчик

Моя специализация включает разработку веб-сайтов, приложений и интерфейсов, работу с базами данных, а также разворачиванием полноценного веб сервера.