当前位置: 首页 > 知识库问答 >
问题:

Docker正在使用中,但没有任何Docker容器

帅锦
2023-03-14

编辑(2/19/21):自从几年前我提出这个原始问题以来,已经过去了很多时间,从那时起我看到了一系列的活动。我重新选择了一个答案,我认为它与解决这个问题的最本地化和最安全的选项一致(通常与docker compose相关)。虽然docker引入了prune命令,但这通常是一个危险的操作,我会谨慎使用,因为您可能会无意中影响机器上的其他应用程序或设置

我在使用Docker 1.9删除Docker卷时遇到问题。1.

我已经删除了所有停止的容器,以便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

对于其中相当大的一部分。如果我一开始没有任何容器,这些卷是如何使用的?

共有3个答案

万知
2023-03-14

卷可以由一个已停止的容器使用。您可以通过以下命令删除此类容器:

docker container prune

然后可以删除未使用的卷

docker volume prune
曾涵育
2023-03-14

您可以使用这些功能来残忍地删除所有与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解释器(~/.bashrc,如果您使用的是bash)文件,并通过执行源代码~/Xrc重新加载它们。此外,您只需将它们复制粘贴到控制台,然后(不管您在准备函数之前选择了什么选项)即可运行:

armageddon

这对于一般的Docker清理也很有用。请记住,这也将删除您的图像,而不仅仅是您的容器(无论是否运行)和任何类型的卷。

舒赞
2023-03-14

该卷可能是通过docker compose创建的?如果是,应通过以下方式将其移除:

docker-compose down --volumes

尼尔斯·贝奇·尼尔森的功劳!

 类似资料:
  • 问题内容: 我首先得到了我的nginx码头工人形象: 然后我开始了: 然后我停止了它: 然后我尝试重新启动它: 好吧,这是一个错误。但实际上,现在容器列表中没有任何内容: 为什么重启nginx镜像失败?如何解决? 问题答案: 这是因为 您已使用开关。 容器已停止且未移除 你发现它停止了 您可以使用以下命令简单地启动它: 编辑:替代方法 如果您想每次使用以下命令启动容器, 然后使用以下之一: 方法1

  • 问题内容: 我试图在Docker容器中使用perf工具来记录给定命令。 设置为1,但是当我不放置该标志时,容器的行为就像是2 。 我可以使用,但是我在perf上运行的代码是不可信的,并且如果我可以通过允许使用perf工具承担一点安全风险,那么在容器上赋予特权权限似乎具有不同的风险级别。 还有其他使用容器内部perf的方法吗? 问题答案: 经过研究,问题不在于,而是(syscall)已在Docker

  • 问题内容: 通常,docker容器使用 root 用户运行。我想使用其他用户,使用docker的USER指令没问题。但是该用户应该能够在容器内使用 sudo 。该命令丢失。 这是用于此目的的简单Dockerfile: 运行此容器,我以用户’docker’登录。当我尝试使用sudo时,找不到命令。所以我尝试使用以下方法在Dockerfile中安装 sudo 软件包 这导致 无法找到包sudo 问题答

  • 问题内容: 似乎在容器中没有“ acl”的情况下挂载了文件系统,因此“ setfacl”将不起作用。而且它也不会让我重新安装它,甚至无法运行’df -h’。 我需要setfacl,因为我以root身份拥有我网站上的所有文件,并且授予Web服务器用户仅对几个目录(如缓存,日志等)的写权限。 我能做什么? 问题答案: 好消息是Docker支持ACL。 在早期版本中,Docker使用了一个不支持它们的名

  • 通常,docker容器使用用户root运行。我想使用一个不同的用户,这是没有问题的使用Docker的用户指令。但该用户应该能够在容器内使用sudo。缺少此命令。 下面是一个用于此目的的简单Dockerfile: 运行这个容器时,我使用用户'docker'登录。当我尝试使用sudo时,找不到该命令。所以我尝试在我的Dockerfile中安装sudo包,使用 这将导致无法定位包sudo