如何使用`docker volume prune`? (即使容器正在运行,`docker volume prune`也会删除所有卷)

在docker文档上,它显示以下内容:

  

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

为了测试这一点,我用来自docker hub的官方最新映像设置了一个MongoDb容器。这样做,在后台创建了两个卷,容器可能需要它们来存储数据。

现在运行docker volume ls时,我可以看到两个带有随机名称的卷。

所以让我们说我将有多个带有随机名称的容器。现在,很难知道其中哪些仍在使用中,因此我期望docker volume prune在这里提供帮助。

所以我执行了命令,期望docker volume prune在我的容器启动并与MongoDb一起运行时不删除任​​何内容。 但是实际上发生的是我的所有卷都被删除了。之后,我的容器关闭,无法重新启动。

我尝试多次重新创建此文件,并且每次即使我的容器正在运行,该命令也只会删除所有卷。

任何人都可以解释这种行为吗?

更新

下面带有我的MongoDB映像的容器ID的命令向我显示了两个卷:

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

因此,据我了解,码头工人知道这些卷和容器属于同一容器。

当我要求docker向我显示悬空的卷时,它再次向我显示相同的卷:

docker volume ls --filter dangling=true

因此,当它们悬空时,prune命令将其删除对我来说很有意义。但是我的容器中显然有正在使用的卷,所以我不清楚。

ling9012 回答:如何使用`docker volume prune`? (即使容器正在运行,`docker volume prune`也会删除所有卷)

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

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

仅未使用的卷

docker volume prune -f

docker volume rm $(docker volume ls -qf dangling=true)
本文链接:https://www.f2er.com/3137481.html

大家都在问