Docker:显示已停止的Docker容器

64

我是 Docker 的新手,想要列出已停止的容器。

使用 docker ps 命令:

sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

没有显示任何内容,因为我重新启动了计算机,并且没有配置它们自动启动容器。

所以当我尝试运行容器时,它会显示:

sudo docker run -d -p 8080:80 --name=angular_moviemasher  moviemasher/angular-moviemasher
docker: Error response from daemon: Conflict. The name "/angular_moviemasher" is already in use by container b4428b708711c15233f558e70f58cb7800e23c4a6a57534abfa5818912630a37. You have to remove (or rename) that container to be able to reuse that name..
See 'docker run --help'.

我想查看已安装的Docker容器并启动它们。

在文档Docker Cheat Sheet with examples中,我只能找到如何显示正在运行的容器的示例:

容器信息

显示正在运行的容器。使用 -a 选项,可以显示正在运行和停止的容器。

docker ps


1
不确定为什么你的引用中提到了“正在运行和已停止”,但你只提到了显示正在运行,但是 docker ps --help 可以帮助你解决这个问题以及其他地方。请注意,你也可以执行 docker rm $(docker ps -a | grep Exit | cut -d ' ' -f 1) 命令来删除所有已退出的容器,这将消除你提到的冲突名称错误。 - ldg
1
docker container ls -a - Koray Tugay
5个回答

88

就像你所说的一样,docker ps -a命令将显示所有已停止和正在运行的容器。而以下命令则会仅显示已停止的容器。

docker ps -a | grep Exit

现在您可以在容器上执行docker logs container-id来查看出了什么问题。


14

只展示已停止的容器的最佳方式是运行以下命令:

docker container ls -f status=exited -a

12

除了上面回答中提到的选项外,还有另一种选择:

docker container list --all

它是在Docker 1.13(2017年1月)中添加的,似乎是推荐的语法
在Docker 1.13中,我们将每个命令重新分组到它所交互的逻辑对象下。例如,列出和启动容器现在是docker container子命令,而历史记录是docker image子命令。
docker container list docker container start docker image history
这些更改让我们简化了Docker CLI语法,改进了帮助文本,并使Docker更易于使用。旧的命令语法仍然受支持,但我们鼓励每个人采用新的语法。

8

你已经给出了答案:

容器信息

-a选项显示正在运行的容器。它会显示正在运行和已停止的容器。

docker ps

尝试一下吧。

sudo docker ps -a

不行,因为它显示了所有的容器,正在运行的容器使列表混乱。这就好像有人问如何在目录中搜索文件,你告诉他们只需运行“tree”命令并找到它... - p0358
我的理解是有人误解了“-a”选项。“在《Docker Cheat Sheet》文档中,我只能找到一个显示正在运行的容器的示例。” “-a”不仅仅是显示正在运行的容器(这也被强调了),而是要显示所有容器。顺便说一句: 像你这样的评论绝对不有助于整个SO社区,这也是我大幅减少在这里停留的原因之一。看来很多人只是来挑起争端... - DAXaholic

5
如果在重启机器之后,docker ps -a 没有显示任何内容,请尝试重新启动 Docker 守护进程(有时我在关机后也会遇到此问题)。

我不知道为什么,但它对我起作用了!谢谢! - Kevin Kouketsu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接