Освободить место, занятое Docker

Сначала посмотреть, что именно занимает, и понимать разницу между анонимными и именованными томами — иначе prune заберёт данные

docker system df
docker system df -v
docker volume prune -f
docker volume prune -a
docker system prune
docker system prune -a

Начинать стоит с docker system df: он покажет, что съело место — образы, тома или кеш сборки. Чистить наугад бессмысленно, потому что в разных случаях помогают разные команды, а на машине разработчика чаще всего лидирует именно кеш сборки.

Главное различие, проверено на Docker 29: docker volume prune по умолчанию удаляет только анонимные тома — те, что Docker создал сам, без имени. Именованные, где обычно и живут данные стендов, он не трогает. Флаг -a снимает это ограничение и вот тогда сносит всё неиспользуемое, включая базы погашенных стендов.

«Неиспользуемый» значит «не подключён ни к одному контейнеру» — в том числе к остановленному. Погашенный docker compose down стенд подпадает под это определение: контейнеров нет, тома висят. Именно так и теряются данные, которые собирались вернуть.

docker system prune -a удаляет все образы, на которых сейчас не держится ни один контейнер, — не только висячие слои. Место освободит заметно, но следующая сборка или запуск потянут всё из реестра заново.

Отдельно: docker system prune не трогает тома, для них нужен флаг --volumes — и он тоже про анонимные.