Как стать автором
Обновить

Быстрый способ уменьшения размера виртуального диска Docker на Windows

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров3.2K

Часто возникает проблема неограниченного расширения виртуального диска с докером на WIndows. Проблема в том, что после удаления лишних образов, контейнеров из docker объем виртуального диска докера не уменьшается. Одним из решением будет использование инструментов очистки пространства от докера и утилиты Diskpart совместно с compact.

Для начала запустим Windows Powershell и узнаем занимаемое пространства в докере с помощью команды: docker system df

Получим следующий вывод:

Вывод команды docker system df
Вывод команды docker system df

В выводе видим информацию о размерах занимаемого пространства и сколько в % этого пространства не используется. На начальном этапе размер моего виртуального диска докера занимал 90 Гб. После использования дальнейших команд размер снизился на 30 Гб до 60 Гб.

Выполним команду docker system prune

Вывод команды docker system prune
Вывод команды docker system prune

Данная команда позволяет удалить кэш сборок, все не использующиеся в данный момент контейнеры, образы, созданные сети. Чтобы не удалить ничего лишнего я предпочитаю использовать отдельные команды для удаления локальных хранилищ, кэшей сборки, образов и контейнеров. Это можно сделать с помощью команд: docker volume prune, docker builder prune, docker image prune, docker container prune.

Как мы видели на первом изображении, у меня больше всего занимало места volume и build cashe, поэтому последовательно я применил команды docker volume prune, docker builder prune. При запросе системы согласны ли мы на удаление, пишем да (Y).

После произведенных манипуляций картина такая:

Вывод команды docker system df
Вывод команды docker system df

Однако виртуальный диск докера размер не уменьшил. Нам теперь необходимо его принудительно сжать. В этом нам поможет утилита DiskPart. Поскольку у меня докер работает на wsl, то в начале необходимо остановить wsl, введя команду wsl --shutdown. Для проверки, что команда успешно отработало выполните wsl --list --verbose. В выводе будет что-то подобное:

Список установленных дистрибутивов wsl и их рабочий статус
Список установленных дистрибутивов wsl и их рабочий статус

Далее выполним команду diskpart и нам откроется командная строка утилиты. Там нам необходимо ввести путь до нашего виртуального диска докера. Команда имеет такой синтаксис: select vdisk file="<Path to docker vhdx disk>". После выполнения команды утилита сообщит, что соответствующий виртуальный диск выбран.

Работа утилиты diskpart
Работа утилиты diskpart

Дальше остается вызвать команду сжатия диска: compact vdisk . После завершения выполнения команды виртуальный диск станет занимать меньше места. В моем случае мне удалось освободить 30 Гб. Здесь все зависит от того, что конкретно вы почистили с помощью docker system prune. Закрываем diskpart и не забываем в конце запустить вновь wsl просто введя wsl.

Теги:
Хабы:
Всего голосов 6: ↑4 и ↓2+2
Комментарии4

Публикации

Истории

Работа

Ближайшие события

19 марта – 28 апреля
Экспедиция «Рэйдикс»
Нижний НовгородЕкатеринбургНовосибирскВладивостокИжевскКазаньТюменьУфаИркутскЧелябинскСамараХабаровскКрасноярскОмск
24 апреля
VK Go Meetup 2025
Санкт-ПетербургОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
14 мая
LinkMeetup
Москва
5 июня
Конференция TechRec AI&HR 2025
МоскваОнлайн
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область