这个问题与我是否应该关注过量的、未运行的Docker容器有关。

我想知道如何移除旧容器。docker rm 3e552code34a允许你删除一个,但我已经有很多了。Docker rm——help没有提供选择选项(像all一样,或者通过映像名称)。

也许有一个存放这些容器的目录,我可以很容易地手动删除它们?


当前回答

我想加上这个简单的答案,因为我没有看到它,这个问题是“老”而不是“全部”。

Sudo docker容器修剪-filter“until=24h”

根据您想要移除的容器的时间跨度调整24h。

其他回答

你可以停止docker容器,一旦停止,你可以删除容器。

停止容器:

$ docker stop "containerID" -你也可以提到容器ID的前两个字母,它是有效的。

取出容器

$ docker rm "containerID" -同样你也可以提到容器的前两个字母

如果这些命令不让你停止/删除容器,m,确保你有sudo访问docker主机。

Use:

docker rm -f $(docker ps -a -q)

它强制停止并删除本地存在的所有容器。

使用Docker 1.13(2016年第四季度),你现在有:

docker system prune -a将删除所有未使用的数据(即,按顺序:停止容器,没有容器的卷和没有容器的图像)。

Docker系统不带-a的修剪只会删除(对于图像)悬垂的图像,或者没有标签的图像,正如smilebomb所评论的那样。

请参阅PR 26108和commit 86de7c0,它们引入了一些新命令,以帮助方便地可视化Docker守护进程数据在磁盘上占用了多少空间,并允许轻松清理“不需要的”多余空间。

docker system prune -a

WARNING! This will remove:
    - all stopped containers
    - all volumes not used by at least one container
    - all images without at least one container associated to them
Are you sure you want to continue? [y/N] y

正如wjv评论的那样,

还有docker {container,image,volume,network} prune,它可以用来删除一种类型对象的未使用实例。

在提交913e5cb中引入,仅适用于Docker 1.13+。

docker container prune

您可以使用多种方式删除容器,我将在后面的回答中解释它们。

码头集装箱修剪。该命令删除所有现在不工作的容器。您可以通过比较docker ps和docker ps -a的输出来找出哪些容器没有工作。docker ps -a中列出的但docker ps中不存在的容器现在没有工作,但它们的容器没有被删除。 Docker kill $(Docker ps -aq)。这个命令的作用是,通过执行$(docker ps -aq),它返回所有容器的id列表并杀死它们。有时此命令不起作用,因为正在运行的容器正在使用它。要做到这一点,你可以使用——force选项。 Docker rm $(Docker ps -aq)。它与第二个命令的定义相同。它们之间唯一的区别是它会删除容器(和docker prune一样),而docker kill不会。 有时需要删除映像,因为您更改了Dockerfile的配置,需要删除它来重新构建。为此,你可以通过运行docker images来查看所有的图像,然后复制你想要删除的图像的ID。只需执行docker image rm <image-id>即可删除。

PS:你可以用docker PS -a -q代替docker PS -aq,两者没有区别。因为在基于unix的操作系统中,您可以像上面的例子一样加入选项。

使用以下嵌套命令:

$ sudo docker stop $(sudo docker ps -a -q)

该命令将停止所有正在运行的容器。

$ sudo docker rm $(sudo docker ps -a -q)

该命令删除所有容器。