如何删除所有docker卷?

如果我做docker volume ls ,我的卷列表是这样的:

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

我想一次删除所有的卷。 我该怎么做?

删除所有未使用的数据(包括没有容器的卷)的官方命令将与docker1.13

 docker system prune 

如果您想单独限制卷, 则只删除未使用的卷 :

 docker volume prune 

你也有docker image prunedocker container prune等:
请参阅“ 修剪未使用的Docker对象 ”。

请参见提交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)pipe理卷的方法是通过PR 14242和docker docker volume命令引入的, 该命令 在 2015年7月发表评论 :

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

编辑于2017年:这个答案是在16年4月16日给出,现在已经过时了,只有在1.13之前的docker版本才能正确使用@VonC的答案,现在它被标记为正确的

要删除未使用的卷,可以使用内置的docker volume rm命令。 rm命令还会删除/var/lib/docker/volumes中不是/var/lib/docker/volumes任何目录,因此请确保没有任何要保存的内容:
命令列出卷,比你的权利:

 $ docker volume ls -qf dangling=true 

清理:

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

有关ls的更多细节,请点击这里

这是我发现是有用的: https : //github.com/chadoe/docker-cleanup-volumes

用于删除/ var / lib / docker / volumes和/ var / lib / docker / vfs / dir中的孤立docker卷的shell脚本Docker版本1.4.1至1.11.x

它基本上是对任何孤立/悬挂卷进行清理,但它包含一个--dry-run但是它也logging了一些--dry-run包含的命令(在prev注释中被引用)

关于Docker 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) 

或者,更好地处理禁止操作,但Linux特定:

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

为了回答这个问题,并从Marc借用,这个工作:

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