1. Запросите у Docker его собственные итоги
Всегда начинайте отсюда. Команда разделяет образы, контейнеры, тома и кэш сборки и показывает, сколько из каждого можно вернуть.
docker system df -v
Docker Desktop хранит всё в одном файле. Он растёт при каждой сборке, а удаление образов его не уменьшает. Вот почему так и что на самом деле возвращает место.
Бесплатно для загрузки и сканирования. Для очистки нужна лицензия: один платёж на компьютер, Mac или Windows.

На Mac Docker Desktop хранит всё внутри виртуальной машины Linux, а весь диск этой машины представляет собой один разреженный файл:
~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
Проверьте его реальный размер на диске — не логический, который всегда равен максимуму, разрешённому вами для Docker:
du -h -d0 ~/Library/Containers/com.docker.docker/Data/vms/0/data/
Удалите образ, и место освободится только внутри виртуальной машины. Файл на вашем Mac остаётся таким же большим, потому что macOS уже выделила ему столько места. Свежие версии Docker Desktop отправляют TRIM изнутри виртуальной машины, и это позволяет macOS забрать освобождённые блоки, но происходит это по расписанию Docker, а не в момент очистки командой prune. До тех пор docker system df сообщает об освобождённых гигабайтах, а Finder не показывает никаких изменений.
По порядку: от наименее разрушительного.
Всегда начинайте отсюда. Команда разделяет образы, контейнеры, тома и кэш сборки и показывает, сколько из каждого можно вернуть.
docker system df -v
На машине, где образы собираются регулярно, это обычно самый крупный пункт и самый безопасный для удаления — единственная плата в том, что следующая сборка будет медленнее.
docker builder prune -a
Остановленные контейнеры, повисшие образы и неиспользуемые сети:
docker system prune
Добавьте -a чтобы удалить ещё и все образы, не занятые работающим контейнером, — их придётся скачивать заново. Добавляйте --volumes только если уверены: в томах базы данных хранят свои данные, и это единственная команда на этой странице, которая уничтожает то, что нельзя скачать снова.
Проверьте, что именно будет удалено:
docker volume ls
docker volume ls -f dangling=true
После очистки у Docker Desktop есть штатный способ вернуть освобождённые блоки: Настройки → Ресурсы → Дополнительно → Использование дискалибо выход и повторный запуск Docker Desktop, который запускает TRIM при старте. Дайте минуту и проверьте размер файла заново, прежде чем решать, что не сработало.
В разделе Настройки → Ресурсылимит виртуального диска определяет, до какого размера Docker.raw разрешено расти. Само по себе уменьшение ничего не освободит, но ограничит проблему. Именно привычка поднимать лимит «на всякий случай» и довела файл до 64 ГБ.
Настройки → Устранение неполадок → Clean / Purge data полностью сбрасывает диск виртуальной машины и возвращает файл почти к нулю. Это удаляет все ваши образы, контейнеры и тома. Пользуйтесь этим, когда ничего другое не помогло и вы знаете, что лежит в томах.
Не удаляйте Docker.raw через Finder. Это не файл кэша, а данные всей установки Docker; удаление его при работающем Docker может оставить виртуальную машину в состоянии, из которого всё равно понадобится сброс.
На том Mac, где Docker дорос до 50 ГБ, DerivedData в Xcode и локальные модели ИИ обычно идут следом. Если вы освобождаете место, стоит один раз измерить весь диск, а не чинить по одной вещи за раз. Полный список
Docker в Linux пишет прямо в /var/lib/dockerпоэтому prune освобождает место сразу, и описанной выше проблемы с TRIM не возникает. Очистка в Linux
Не через Finder и не при работающем Docker. Этот один файл — все ваши образы, контейнеры и тома. Если вы действительно хотите начать с чистого листа, используйте «Устранение неполадок → Clean / Purge data» в Docker Desktop: это делает то же самое, но так, как Docker ожидает.
Потому что он освободил 20 ГБ внутри файловой системы виртуальной машины, а не на вашем Mac. Файл сохраняет размер, пока не отработает TRIM и macOS не заберёт блоки обратно. Обычно это запускается выходом и повторным открытием Docker Desktop.
Только если добавить --volumes. Без этого флага тома не трогаются. С ним удаляется любой том, не подключённый к контейнеру, а том остановленной базы данных считается неподключённым.
Единственно верного ответа нет, но на машине с несколькими активными проектами 15–25 ГБ — это нормально, а 60 ГБ означает, что кэш сборки не очищали ни разу. Проверьте docker system df -v прежде чем считать, что дело в образах.
Короткие статьи, которые подробнее раскрывают отдельные части этого руководства.