Так как в Docker более менее адекватный механизм удаления старых образов и контейнеров появился в версии 1.13: PR 26108 (за счет параметра prune который удаляет все старые контейнеры volume без контейнеров и образа без контейнеров), но зная что с каждой новой версией кол-во багов и проблем ростет, я лично не рискую обновляться, потому использую такие механизмы:
Удаление всех не используемых images
1 |
docker rmi $(docker images --filter "dangling=true" -q --no-trunc) |
Удаление контейнеров в статусе “exited”
1 |
docker rm $(docker ps -qa --no-trunc --filter "status=exited") |
Удаление не используемых volume
1 |
docker volume ls -qf "dangling=true" | xargs docker volume rm |
Все это можно совместить в один алиас для bash окружения:
1 2 3 4 |
alias docker-clean=' \ docker ps --no-trunc -aqf "status=exited" | xargs docker rm ; \ docker images --no-trunc -aqf "dangling=true" | xargs docker rmi ; \ docker volume ls -qf "dangling=true" | xargs docker volume rm' |
Update:
Не знаю з якої версії docker, але з’явилась додаткові команди:
1 2 3 |
docker system prune docker container prune docker volume prune |
Які дозволяють видалити не використвані данні з системи, тим самим можна трохи звільнити місце.