小编Fla*_*uff的帖子

如何使用“docker 卷修剪”?(“docker volume prune”即使在容器正在运行时也会删除所有卷)

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

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

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

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

假设我有多个容器,其中的卷使用随机名称。现在很难知道其中哪些仍在使用,所以我希望docker volume prune在这里提供帮助。

因此,我执行了该命令,希望docker volume prune在我的容器启动并使用 MongoDb 运行时不会删除任何内容。但实际发生的情况是,我的所有卷都被删除了。之后我的容器关闭并且无法重新启动。

我多次尝试重新创建此命令,即使每次容器运行时,该命令也会删除所有卷。

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

更新:

使用 MongoDB 映像的容器 ID 执行以下命令会显示 2 个卷:

docker inspect -f '{{ .Mounts }}' *CONTAINER_ID*
Run Code Online (Sandbox Code Playgroud)

因此,根据我的理解,docker 知道这些卷和容器属于同一组。

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

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

因此,当它们悬空时,修剪命令将它们删除对我来说是有意义的。但我显然有与我的容器一起使用的卷,所以我不清楚。

docker docker-volume

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

docker ×1

docker-volume ×1