如果我做一个docker volume ls
,我的卷列表是这样的:
DRIVER VOLUME NAME
local 305eda2bfd9618266093921031e6e341cf3811f2ad2b75dd7af5376d037a566a
local 226197f60c92df08a7a5643f5e94b37947c56bdd4b532d4ee10d4cf21b27b319
...
...
local 209efa69f1679224ab6b2e7dc0d9ec204e3628a1635fa3410c44a4af3056c301
我想一次删除所有的卷我该怎么做?
5条答案
按热度按时间vngu2lb81#
移除所有未使用数据(包括没有容器的卷)的官方命令将在Docker 1.13中发布。
如果只想限制卷,removing only unused volumes:
还有
docker image prune
、docker container prune
等:查看更多关于“Prune unused Docker objects”
参见commit 86de7c0和PR 26108。
你可以在play-with-docker.com中看到它的作用:
当前(Docker 1.13之前)的卷管理方式是由PR 14242 and the
docker volume
command引入的,它在2015年7月的评论中记录了:wgmfuz8q2#
编辑于2017年:这个答案是在2016年4月16日给出的,现在已经过时了,并且仅适用于1.13之前的Docker版本,请使用@VonC的答案,现在它被标记为正确
要删除未使用的卷,您可以使用内置的docker
volume rm
命令。rm
命令也会删除/var/lib/docker/volumes
中不是卷的任何目录,因此请确保没有在其中放置任何要保存的内容:命令列出卷,比你的稍微正确一点:
清理:
更多关于ls here的细节,关于rm here
68bkxrlz3#
为了回答这个问题,借用马克的话,这是可行的:
yptwkmov4#
这是我发现的有用的东西:https://github.com/chadoe/docker-cleanup-volumes
Shellscript用于删除/var/lib/docker/volumes和/var/lib/docker/vfs/dir中的孤立docker卷Docker版本1.4.1至1.11.x
它基本上会清理任何孤立/悬空卷,但它包括一个
--dry-run
,但它也注意到了一些docker包含的命令(在之前的评论中引用)关于Docker 1.9及更高版本的说明
要在Docker 1.9及更高版本中删除孤立卷,您还可以使用内置的docker volume命令,而不是此docker-cleanup-volumes脚本。内置的命令也会删除/var/lib/docker/volumes中任何不是卷的目录,因此请确保您没有在其中放置任何想要保存的内容:
列表:
清理:
或者,更好地处理无操作,但特定于Linux:
ckx4rj1h5#
如果您想删除特定的凭证,请使用 * 删除,例如runner-*
先做ls
命令
docker volume ls --format '{{ .Name }}' | grep -E "^runner-*"
如果你想改变字符串,用你的卷名替换runner的名字
然后用remove volume命令合并
docker volume rm $(docker volume ls --format '{{ .Name }}' | grep -E "^runner-*")