2016-04-16 2 views
24

Если я делаю docker volume ls мой список томов, как это:Как удалить все объемы докеров?

DRIVER    VOLUME NAME 
local    305eda2bfd9618266093921031e6e341cf3811f2ad2b75dd7af5376d037a566a 
local    226197f60c92df08a7a5643f5e94b37947c56bdd4b532d4ee10d4cf21b27b319 
... 
... 
local    209efa69f1679224ab6b2e7dc0d9ec204e3628a1635fa3410c44a4af3056c301 

, и я хочу, чтобы удалить все мои тома сразу. Как мне это сделать?

ответ

43

официальный команды, чтобы удалить все неиспользуемые данные (включая ЛУДИНГ томов без контейнеров) будет с грузчиком 1,13

docker system prune 

Если вы хотите ограничить объемы в одиночку, removing only unused volumes:

docker volume prune 

Вы также docker image prune, docker container prune и т.д.:
Смотри на " Prune unused Docker objects ".

См. commit 86de7c0 и PR 26108.

Вы можете увидеть его в действии в play-with-docker.com:

/ # docker ps -a 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS      PORTS    NAMES 
1296a5e47ef3  hello-world   "/hello"   7 seconds ago  Exited (0) 6 seconds ago      prickly_poincare 

/# docker system prune 
WARNING! This will remove: 
     - all stopped containers 
     - all volumes not used by at least one container 
     - all networks not used by at least one container 
     - all dangling images 
Are you sure you want to continue? [y/N] y 
Deleted Containers: 
1296a5e47ef3ab021458c92ad711ad03c7f19dc52f0e353f56f062201aa03a35 

Тока (до докер 1,13) способ управления тома был введен с PR 14242 and the docker volume command, какими документами in its comment с июля 2015 года:

docker volume rm $(docker volume ls -q --filter dangling=true) 
+0

Это замечательно, спасибо. Я не знал о новых командах 'prune'. – treeface

12

редактировали 2017 года: Этот ответ был дан 16 апреля '16 и теперь устарел, и верно только для Docker версии до 1.13 , пожалуйста, используйте ответ от @VonC, теперь он помечен как правильно

Для удаления неиспользуемых томов вы можете использовать команду встроенного докера volume rm. Команда rm также удаляет любую директорию в /var/lib/docker/volumes, что не объем, поэтому убедитесь, что вы ничего не положить туда вы хотите сохранить:
команду к томам списка, немного вправо, чем ваша:

$ docker volume ls -qf dangling=true 

Cleanup:

$ docker volume rm $(docker volume ls -qf dangling=true) 

подробнее о Ls here, о п.м. here

+1

Я бы не запустить его без проверки списка оборванных томов с '--dry-run' параметра первый. –

+0

Нет опции '--dry-run'. –

2

Это то, что я считаю полезным: https://github.com/chadoe/docker-cleanup-volumes

Shellscript удалить осиротевшие объемы Docker в/вар/Lib/грузчиком/томов и/вар/Библиотека/грузчик/VFS/реж Docker версия 1.4.1 до 1.11.x

Это в основном делает очистку любых осиротевшими/оборванных томов, но она включает в себя --dry-run, но это к сведению некоторых докер включены команды, а также (которые имеются ссылки в комментарии) предыдущей

примечание о докер 1.9 и up

Для удаления потерянных томов в Docker 1.9 и выше вы также можете использовать встроенные команды тонера docker вместо этого сценария для очистки докеров. Встроенная команда также удаляет любую директорию в/вар/Lib/грузчиком/томов, которые не объем, так убедитесь, что вы ничего не положить туда вы хотите сохранить:

Список:

$ docker volume ls -qf dangling=true 

Cleanup:

$ docker volume rm $(docker volume ls -qf dangling=true) 

Или, обработка не-оп лучше, но Linux конкретно:

$ docker volume ls -qf dangling=true | xargs -r docker volume rm 
+0

добавил некоторые полезные бит из него –

0

Чтобы ответить на этот вопрос и заимствования от Marc, это работает:

$ docker volume rm $(docker volume ls -qf dangling=true | xargs) 
Смежные вопросы