这个问题与我是否应该关注过量的、未运行的Docker容器有关。
我想知道如何移除旧容器。docker rm 3e552code34a允许你删除一个,但我已经有很多了。Docker rm——help没有提供选择选项(像all一样,或者通过映像名称)。
也许有一个存放这些容器的目录,我可以很容易地手动删除它们?
这个问题与我是否应该关注过量的、未运行的Docker容器有关。
我想知道如何移除旧容器。docker rm 3e552code34a允许你删除一个,但我已经有很多了。Docker rm——help没有提供选择选项(像all一样,或者通过映像名称)。
也许有一个存放这些容器的目录,我可以很容易地手动删除它们?
当前回答
下面是删除所有退出容器的一行程序。
docker rm $(docker ps -a | grep Exited | grep -v CON | awk '{print $1}')
如果你想删除所有的图像,你可以使用这样的东西。
Docker rmi $(Docker images | sed -n '1!P ' | awk '{打印$3}')
其他回答
删除指定的容器
docker container rm container_id
如果容器正在运行,则必须在删除它之前停止它
docker container stop container_id
该命令将删除所有现有的容器
docker container rm $(docker container -a -q)
查看所有现有图像:
docker images -a
查看所有现有的容器:
docker ps -a
删除单张图片:
docker images -a
docker rmi <IMAGE_ID>
停止单个容器:
docker ps -a
docker stop <CONTAINER_ID>
停止多个容器:
docker ps -a
docker stop <CONTAINER_ID1> <CONTAINER_ID2>
删除单个容器:
docker ps -a
docker rm <CONTAINER_ID>
删除多张图片:
docker images -a
docker rmi <IMAGE_ID1> <IMAGE_ID2>
删除多个停止的容器:
docker ps -a
docker rm <CONTAINER_ID1> <CONTAINER_ID2>
只能在一个命令中删除图像:
docker rmi -f $(docker images -a -q)
在一个命令中删除容器和图像:
docker rm $(docker ps -a -q) && docker rmi -f $(docker images -a -q)
修剪所有容器:
docker container prune
从Docker 1.13开始。x你可以使用Docker容器修剪:
docker container prune
这将删除所有停止的容器,并且应该在所有平台上以相同的方式工作。
还有一个Docker系统修剪:
docker system prune
它将在一个命令中清理所有未使用的容器、网络、映像(悬空和未引用),以及可选的卷。
对于较旧的Docker版本,您可以将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。
我发现下面的命令非常方便地停止和删除所有的容器。如果你使用-f (force)标志,你不需要用另一个命令显式地停止,因为它会停止所有正在运行的容器:
docker rm -f $(docker ps -a -q)
在windows (powershell)上,你可以这样做:
$containers = docker ps -a -q Foreach ($container in $containers) {docker rm $container -f}