Как удалить все тома docker?



Если я делаю docker volume ls мой список томов вроде этого:



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


и я хочу удалить все мои Тома сразу. Как я могу это сделать?

582   4  

4 ответов:

официальная команда для удаления всех неиспользуемых данных (включая Тома без контейнеров) будет с docker 1.13

docker system prune  

если вы хотите ограничиться только объемами,удаление только неиспользованных объемов:

docker volume prune

у вас тоже есть docker image prune,docker container prune, etc:
Смотрите больше на "обрезать неиспользуемые объекты Docker".

посмотреть 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

текущий (pre-docker 1.13) способ управления объемом был введен с пр 14242 и docker volume команда, что документы в своем комментарии С июля 2015 года:

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

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

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

$ docker volume ls -qf dangling=true

лечение:

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

подробнее о ls здесь, о rm здесь

вот что я нашел полезным:https://github.com/chadoe/docker-cleanup-volumes

Shellscript для удаления потерянных томов docker в /var / lib / docker / volumes и /var / lib / docker/vfs / dir Докер версии 1.4.1 до 1.11.x

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

примечание о Докере 1.9 и выше

чтобы удалить потерянные Тома в Docker 1.9 и выше, вы также можете использовать встроенные команды docker volume вместо этого сценария docker-cleanup-volumes. Встроенная команда также удаляет любой каталог в /var / lib / docker / volumes, который не является Томом, поэтому убедитесь, что вы не поместили туда ничего, что хотите сохранить:

список:

$ docker volume ls -qf dangling=true

лечение:

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

или, обрабатывая no-op лучше, но специфичный для Linux:

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

чтобы ответить на вопрос и заимствование у Марка, это работает:

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

Comments

    Ничего не найдено.