如何使用 "docker volume prune"?(`docker volume prune`即使在容器运行时也要删除所有卷)

问题描述 投票:0回答:1

在docker文档中,它说了以下内容。

docker volume prune === 删除所有未使用的本地卷

为了测试,我用docker hub的官方最新镜像建立了一个MongoDb容器。这样做,在幕后创建了2个卷,这可能是容器存储数据所需要的。

当运行 docker volume ls 现在,我可以看到两个使用随机名称的卷。

所以,假设我有多个容器的卷使用随机名称。现在要知道哪些卷还在使用会变得很困难,所以我希望能用 docker volume prune 来帮助我。

于是我执行了这个命令,期望 docker volume prune 但实际发生的情况是,我的所有卷都被删除了。之后,我的容器就关闭了,无法重新启动。

我试着重新创建了很多次,每次即使我的容器正在运行,命令也只是删除所有卷。

有人能解释这种行为吗?

更新。

用MongoDB镜像的容器ID执行下面的命令,显示出2个卷。

docker inspect -f '{{ .Mounts }}' *CONTAINER_ID*

所以根据我的理解,docker知道这些卷和容器是属于一起的。

当我要求docker向我显示悬空的卷时,它又向我显示了相同的卷。

docker volume ls --filter dangling=true

所以当它们悬空的时候,我觉得prune命令可以将它们删除。但很明显,我的容器正在使用这些卷,所以我不清楚。

docker docker-volume
1个回答
0
投票

你可以删除所有现有的容器,然后删除所有卷。

docker rm -vf $(docker ps -aq) && docker volume prune -f

只有未使用的卷

docker volume prune -f

docker volume rm $(docker volume ls -qf dangling=true)
© www.soinside.com 2019 - 2024. All rights reserved.