列表仅停止Docker容器

Yog*_*h_D 165 containers docker

Docker为您提供了一种列出运行容器或所有容器(包括已停止容器)的方法.

这可以通过以下方式完成:

$ docker ps # To list running containers
Run Code Online (Sandbox Code Playgroud)

或者

$ docker ps -a # To list running and stopped containers
Run Code Online (Sandbox Code Playgroud)

我们有办法只列出已停止的容器吗?

Yog*_*h_D 268

只能使用以下列表列出停止的容器:

docker ps --filter "status=exited"
Run Code Online (Sandbox Code Playgroud)

要么

docker ps -f "status=exited"
Run Code Online (Sandbox Code Playgroud)

  • 很酷,现在我可以用`docker rm $(docker ps --filter"status = exited"-q)删除已停止的容器 (21认同)
  • 从1.25我可以使用"docker container prune"我相信删除已停止的容器 (19认同)
  • 此外,您可以使用`grep`过滤它们,例如`docker ps -a | grep退出`或类似的东西. (3认同)
  • 最好在您的bash配置文件中创建一个别名,并使用较短的关键字/命令来清理已停止的容器 (2认同)

BMi*_*tch 29

典型的命令是:

docker container ls -f 'status=exited'
Run Code Online (Sandbox Code Playgroud)

但是,这只会列出一种可能的非运行状态.以下是所有可能状态的列表:

  • 创建
  • 重新启动
  • 赛跑
  • 去除
  • 暂停
  • 退出

您可以通过在状态上传递多个过滤器来过滤多种状态:

docker container ls -f 'status=exited' -f 'status=dead' -f 'status=created'
Run Code Online (Sandbox Code Playgroud)

如果要将它与自动清理脚本集成,可以使用一些bash语法将一个命令链接到另一个命令,只输出容器ID -q,并且还可以使用退出代码过滤器仅限于成功退出的容器:

docker container rm $(docker container ls -q -f 'status=exited' -f 'exited=0')
Run Code Online (Sandbox Code Playgroud)

有关可以使用的过滤器的更多详细信息,请参阅Docker的文档:https://docs.docker.com/engine/reference/commandline/ps/#filtering


Art*_*one 17

docker container list -f "status=exited"
Run Code Online (Sandbox Code Playgroud)

或者

docker container ls -f "status=exited"
Run Code Online (Sandbox Code Playgroud)

或者

 docker ps -f "status=exited"
Run Code Online (Sandbox Code Playgroud)