在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命令将其删除对我来说很有意义。但是我的容器中显然有正在使用的卷,所以我不清楚。
答案 0 :(得分:0)
您可以删除所有现有容器,然后删除所有卷。
docker rm -vf $(docker ps -aq) && docker volume prune -f
仅未使用的卷
docker volume prune -f
或
docker volume rm $(docker volume ls -qf dangling=true)