Docker is in volume in use, but there aren't any Docker containers

11 浏览
0 Comments

Docker is in volume in use, but there aren't any Docker containers

编辑(2021年2月19日):自我最初提出这个问题以来已经过去了很长时间,我看到了自那时以来的一系列活动。我重新选择了一个答案,我认为它是解决这个问题最局部化和安全的选项(通常与docker-compose相关)。虽然docker引入了prune命令,但它通常是一项危险的操作,我建议您小心使用它,因为您可能会无意中影响您在计算机上拥有的其他应用程序或设置。


我一直在使用Docker 1.9.1时遇到删除Docker卷的问题。

我已经删除了所有已停止的容器,以便docker ps -a返回为空。

当我使用docker volume ls时,我得到了一堆Docker容器:

docker volume ls
DRIVER              VOLUME NAME
local               a94211ea91d66142886d72ec476ece477bb5d2e7e52a5d73b2f2f98f6efa6e66
local               4f673316d690ca2d41abbdc9bf980c7a3f8d67242d76562bbd44079f5f438317
local               eb6ab93effc4b90a2162e6fab6eeeb65bd0e4bd8a9290e1bad503d2a47aa8a78
local               91acb0f7644aec16d23a70f63f70027899017a884dab1f33ac8c4cf0dabe5f2c
local               4932e2fbad8f7e6246af96208d45a266eae11329f1adf176955f80ca2e874f69
local               68fd38fc78a8f02364a94934e9dd3b5d10e51de5b2546e7497eb21d6a1e7b750
local               7043a9642614dd6e9ca013cdf662451d2b3df6b1dddff97211a65ccf9f4c6d47
#etc x 50

由于这些卷都不包含任何重要信息,我尝试使用docker volume rm $(docker volume ls -q)清除所有卷。

在这个过程中,大多数被删除了,但是一部分会返回:

Error response from daemon: Conflict: volume is in use
Error response from daemon: Conflict: volume is in use
Error response from daemon: Conflict: volume is in use
Error response from daemon: Conflict: volume is in use
Error response from daemon: Conflict: volume is in use

如果我起初没有任何容器存在,那么这些卷是如何被使用的呢?

admin 更改状态以发布 2023年5月25日
0
0 Comments

您可以使用这些函数彻底删除与Docker相关的所有内容:

removecontainers() {
    docker stop $(docker ps -aq)
    docker rm $(docker ps -aq)
}
armageddon() {
    removecontainers
    docker network prune -f
    docker rmi -f $(docker images --filter dangling=true -qa)
    docker volume rm $(docker volume ls --filter dangling=true -q)
    docker rmi -f $(docker images -qa)
}

您可以将它们添加到您的〜/Xrc文件中,其中X是您的shell解释器(如果您使用bash,则是〜/ .bashrc )文件并通过执行source〜/ Xrc 重新加载它们。另外,您也可以将它们复制粘贴到控制台中,然后(不考虑您先前选择哪个选项来准备函数),只需运行:

armageddon

它也适用于一般的Docker清理。请注意,这也会删除您的镜像,不仅是运行或非运行容器,还包括任何类型的卷。

0
0 Comments

也许该卷是通过docker-compose创建的?如果是这样,应该通过下列命令进行删除:

docker-compose down --volumes


感谢Niels Bech Nielsen

0