Используя докер на вашем компьютере, вы можете заметить как активно он использует место для контейнеров и имейджей. Рано или поздно настигает момент когда пора чистить всё это место.
Если вы используете линукс, то у вас нет проблем, достаточно использовать команду:
docker system prune
Но на windows это не работает, почему же? Проблема в том что все свои данные докер хранит внутри виртуального диска .vhdx
который может самостоятельно разрастаться, но не уменьшаться в размерах. Но это не беда, ведь есть способ вручную сжать его.
Для начала давайте определимся с редакцией windows, ведь от этого зависит решение.
Если у вас Windows Home Edition
- Откройте окно PowerShell от имени администратора
- Определите, где находится файл диска докера
По умолчанию он храниться по пути
"C:\Users\User\AppData\Local\Docker\wsl\data\ext4.vhdx"
- Завершите работу Windows Subsystem for Linux командой
wsl --shutdown
- Запустите утилиту DiskPart
diskpart
- Выберите файл с диском докера
select vdisk file="C:\Users\User\AppData\Local\Docker\wsl\data\ext4.vhdx"
attach vdisk readonly
- Произведите сжатие, это может занять довольно много времени, в зависимости от веса файла
compact vdisk
- Завершите работу утилиты DiskPart
detach vdisk
exit
Если у вас не Windows Home Edition
- Откройте окно PowerShell от имени администратора
- Подключите модуль Hyper-V в PowerShell
Import-Module Hyper-V
- Определите, где находится файл диска докера
По умолчанию он храниться по пути
"C:\Users\User\AppData\Local\Docker\wsl\data\ext4.vhdx"
- Завершите работу Windows Subsystem for Linux командой
wsl --shutdown
- Перейдите в каталог с диском
cd "C:\Users\User\AppData\Local\Docker\wsl\data\"
- Произведите сжатие, это может занять довольно много времени, в зависимости от веса файла
optimize-vhd -Path .\ext4.vhdx -Mode full
Вот так просто мы освободили пару (десятков) гигабайт на нашем диске.