如何删除已删除docker-container的docker-volume? 如果要清理,可以使用!important上的--rm标志使用docker run命令清除至少一个容器未使用的所有卷获取关联卷

问题描述

我有运行大量Docker容器的测试。每个都有一个体积。

如何知道需要删除的卷名?

例如:

~ docker run -d registry:2 
~ docker volume inspect c80fc65a79039d70cf54b3af3ab66b378dec42d0757928ae94277b197d8d8104
[
    {
        "CreatedAt": "2020-08-14T11:33:50Z","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/c80fc65a79039d70cf54b3af3ab66b378dec42d0757928ae94277b197d8d8104/_data","Name": "c80fc65a79039d70cf54b3af3ab66b378dec42d0757928ae94277b197d8d8104","Options": null,"Scope": "local"
    }
]

手动停止并移除registry:2容器后,该卷仍然存在。

我不想删除所有卷,因为其中一些仍在使用中。

解决方法

您不需要自己确定卷名。实际上,您在这里有多个选项。

如果要清理,可以使用!important上的--rm标志

参考:docs.docker.com: Clean Up (--rm)

如果设置--rm标志,则在删除容器时,Docker还将删除与该容器关联的匿名卷。这类似于运行docker rm -v my-container。仅删除没有名称的指定卷。例如,在运行时:

使用docker run命令清除至少一个容器未使用的所有卷

参考:docs.docker.com: docker system prune

删除所有未使用的容器,网络,图像(悬空的和未引用的)以及卷(可选)。

获取关联卷

如果您真的想获取容器的体积,可以使用代码段

docker system prune --volumes
,

您可以手动删除未使用的卷:

docker volume rm c80fc65a79039d70cf54b3af3ab66b378dec42d0757928ae94277b197d8d8104

prune所有未使用的卷

docker volume prune

删除所有未使用的本地卷。未使用的本地卷是未被任何容器引用的那些

,

要清理我正在使用的所有匿名卷:

,(x.shape,y.shape)

如果您想知道为什么这些随机卷存在,请阅读更多here