如何删除旧的Docker容器

这个问题与我应该关心多余的,未运行的Docker容器有关吗?

我想知道如何移除旧容器。 docker rm 3e552code34a可以让你删除一个,但我已经有很多了。 docker rm --help不会提供选择选项(如所有或图像名称)。

也许有一个这些容器存储在哪里我可以轻松地手动删除它们的目录?


Docker 1.13.x中有一个名为Docker container prune的新特性:docker docker container prune这将完成你想要的功能,并且应该以同样的方式在所有平台上工作。

还有一个码头系统修剪: docker system prune ,它将一个命令清理容器,图像,卷和网络。

原始答案:

有一些关于Docker清理命令的讨论。 你可以找到这张票上的信息:https://github.com/dotcloud/docker/issues/928

在该命令可用之前,您可以将Docker命令与其他Unix命令串起来以获取所需内容。 这里是一个关于如何清理过去几周的旧容器的例子:

$ docker ps --filter "status=exited" | grep 'weeks ago' | awk '{print $1}' | xargs --no-run-if-empty docker rm

为了给出功劳,这个例子来自https://twitter.com/jpetazzo/status/347431091415703552。


另一种方法,我从Guillaume J. Charmes那里得到(信用证到期):

docker rm `docker ps --no-trunc -aq`

将以优雅的方式移除所有容器。

而Windows的Bartosz Bilicki则表示:

FOR /f "tokens=*" %i IN ('docker ps -a -q') DO docker rm %i

对于PowerShell:

docker rm @(docker ps -aq)

Docker 1.13(2016年第四季度)的更新,归功于VonC(稍后在此主题中):

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

请参阅PR 26108和提交86de7c0,它们引入了一些新命令来帮助可视化Docker守护程序数据在磁盘上占用多少空间,并允许轻松清除“不需要的”过量。

docker system prune

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

更新后的答案现在使用docker system prunedocker container prune 。 请参阅VonC的更新回答:https://stackoverflow.com/a/39860665/411229

以前的答案在上面编写几个不同的提示时,删除所有未运行的容器的最优雅的方式似乎是:

docker rm $(docker ps -q -f status=exited)

  • -q仅打印容器ID(不含列标题)
  • -f允许您过滤打印容器的列表(在这种情况下,我们正在过滤以仅显示已退出的容器)
  • 链接地址: http://www.djcxy.com/p/3001.html

    上一篇: How to remove old Docker containers

    下一篇: How to get a Docker container's IP address from the host?