Как удалить все тома docker?
Если я делаю docker volume ls мой список томов вроде этого:
DRIVER VOLUME NAME
local 305eda2bfd9618266093921031e6e341cf3811f2ad2b75dd7af5376d037a566a
local 226197f60c92df08a7a5643f5e94b37947c56bdd4b532d4ee10d4cf21b27b319
...
...
local 209efa69f1679224ab6b2e7dc0d9ec204e3628a1635fa3410c44a4af3056c301
и я хочу удалить все мои Тома сразу. Как я могу это сделать?
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)
вот что я нашел полезным: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