如何删除旧的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 prune
或docker container prune
。 请参阅VonC的更新回答:https://stackoverflow.com/a/39860665/411229
以前的答案在上面编写几个不同的提示时,删除所有未运行的容器的最优雅的方式似乎是:
docker rm $(docker ps -q -f status=exited)
-q
仅打印容器ID(不含列标题) -f
允许您过滤打印容器的列表(在这种情况下,我们正在过滤以仅显示已退出的容器) 上一篇: How to remove old Docker containers
下一篇: How to get a Docker container's IP address from the host?