Короткий ответ
Команда docker system prune удаляет остановленные контейнеры, неиспользуемые пользовательские сети, "висячие" (dangling) образы и build-кэш; флаг -a дополнительно удаляет все неиспользуемые образы (не только dangling), а --volumes — неиспользуемые тома.
Как это работает подробнее
со временем на хосте накапливаются остановленные контейнеры, промежуточные (dangling, без тега) образы от пересборок и неиспользуемые тома/сети — всё это продолжает занимать место на диске, даже если активно не используется. docker system prune проходит по этим категориям объектов и удаляет те, что не привязаны ни к одному работающему или даже остановленному (в зависимости от флагов) контейнеру.
Пример кода
Пример конфигурации
$ docker system prune -a --volumes
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all volumes not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N]Что использовать на практике
- Практика. команду часто запускают на CI-раннерах и build-серверах, где регулярно накапливается большой объём build-кэша и промежуточных слоёв; перед добавлением
--volumesстоит убедиться, что нет важных данных только в неиспользуемых на вид volume.
Подводные камни
- Риск. запускают
docker system prune -a --volumesна production-хосте без предварительной проверки, что именно будет удалено — команда может безвозвратно удалить volume с данными, которые не были подключены ни к одному контейнеру в момент запуска, но формально ещё нужны.