В официальной документации Docker упоминается, что мне нужно запустить, docker rm -v containername
чтобы специально удалить том данных. Но что делать, если вы уже удалили все контейнеры, ссылающиеся на определенный объем данных?
59
До версии 1.9 Docker не предоставлял никаких способов удаления висячих томов.
Если такие тома занимают слишком много места на диске, и вы хотите взять дело в свои руки, вы можете вручную удалить тома, сначала определив те, которые используются. Вы можете запустить, docker inspect -f '{{ .Volumes }}' containername
чтобы найти расположение в файловой системе используемых томов, а затем удалить все, кроме них. Если у вас много контейнеров, вы можете запустить for x in $(docker ps -qa | sed '1d'); do docker inspect -f '{{ .Volumes }}' ${x}; done
циклически перебирать контейнеры и перечислять тома.
А еще лучше, вы можете использовать скрипт Python здесь , обязательным условием является установка клиента API Python для Dockerpip install docker-py
| sed '1d'
? Это выбрасывает первый результат.-q
вариант вdocker ps -qa
уже избавляется от строки заголовка в выходном сигнале. Я использую докер версии 1.13 и там я должен использовать{{ .Mounts }}
вместо{{ .Volumes }}
.В Docker 1.9 есть возможность лучше управлять томами с помощью
docker volume
(см. Этот PR ):Их можно удалить с помощью этой команды:
источник
dangling=false
списками для меня точно такие же, только в другом порядке. Докер 1.9.1. Звучит подозрительно; этот свисающий фильтр действительно работает? Ах, это ошибка. github.com/docker/docker/issues/16095 (помечено как закрытое, но все еще проблема для меня ...)Команды очистки: в docker 1.13 введены команды очистки. Чтобы удалить все неиспользуемые контейнеры, изображения, сети и тома:
docker system prune
или индивидуально:
docker container prune
docker image prune
docker network prune
docker volume prune
источник
Используйте команду
очистить свисающие тома с докера 1.9 и выше.
источник
У меня есть докер 1.6.
Версия Python не работает для меня, это жалуется на несоответствие версии докера. Удивительно, что в такие времена ничто не сравнится со старым добрым способом ведения дел.
Просто добавьте объявление функции volpurge () в ваш корневой файл .bashrc. Эта функция должна быть запущена от имени пользователя root.
источник