如何删除所有docker卷?

Ava*_*ara 80 docker

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

DRIVER              VOLUME NAME
local               305eda2bfd9618266093921031e6e341cf3811f2ad2b75dd7af5376d037a566a
local               226197f60c92df08a7a5643f5e94b37947c56bdd4b532d4ee10d4cf21b27b319
...
...
local               209efa69f1679224ab6b2e7dc0d9ec204e3628a1635fa3410c44a4af3056c301
Run Code Online (Sandbox Code Playgroud)

我想立刻删除所有卷.我该怎么做?

Von*_*onC 164

删除所有未使用的数据(包括没有容器的卷)的官方命令将使用docker 1.13

docker system prune  
Run Code Online (Sandbox Code Playgroud)

如果要仅限制卷,请仅删除未使用的卷:

docker volume prune
Run Code Online (Sandbox Code Playgroud)

你也有docker image prune,docker container prune等:
多见于" 普鲁泊坞闲置对象 ".

请参阅提交86de7c0PR 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
Run Code Online (Sandbox Code Playgroud)

PR 14242和docker volume命令引入了当前(码头前1.13)管理卷的方式,命令 2015年7月的评论中记录:

docker volume rm $(docker volume ls -q --filter dangling=true)
Run Code Online (Sandbox Code Playgroud)

  • `docker system prune` 似乎没有删除本地卷,但 `docker volume prune` 可以解决这个问题 (7认同)
  • prune命令很棒,但是请小心使用它们。似乎他们假设容器在您调用它们时正在运行。它将清除可能关联但未积极使用的事物(例如,网络),从而在下次启动现有容器时导致失败。如果您不确定会被修剪的内容,请提前使用“悬挂”过滤器:) (3认同)

vvc*_*hik 21

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

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

$ docker volume ls -qf dangling=true
Run Code Online (Sandbox Code Playgroud)

清理:

$ docker volume rm $(docker volume ls -qf dangling=true)
Run Code Online (Sandbox Code Playgroud)

关于LS更多的细节在这里,约马币这里

  • 如果您无论如何都想删除所有卷,则可以使用此答案。谢谢! (3认同)

Jon*_*Lin 14

为了回答这个问题并借用马克的话,这是有效的:

$ docker volume rm $(docker volume ls -qf dangling=true | xargs)
Run Code Online (Sandbox Code Playgroud)


Mar*_*ung 5

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

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

它基本上清理了任何孤立/悬空卷,但它包括一个--dry-run但它也记录了一些 docker 包含的命令(在上一条评论中引用)

关于 Docker 1.9 及更高版本的注意事项

要删除 Docker 1.9 及更高版本中的孤立卷,您还可以使用内置的 docker volume 命令而不是这个 docker-cleanup-volumes 脚本。内置命令还会删除 /var/lib/docker/volumes 中不是卷的任何目录,因此请确保您没有在其中放置任何要保存的内容:

列表:

$ docker volume ls -qf dangling=true
Run Code Online (Sandbox Code Playgroud)

清理:

$ docker volume rm $(docker volume ls -qf dangling=true)
Run Code Online (Sandbox Code Playgroud)

或者,更好地处理无操作但特定于 Linux:

$ docker volume ls -qf dangling=true | xargs -r docker volume rm
Run Code Online (Sandbox Code Playgroud)