如何在Docker中列出容器

965

有一个列出镜像的命令docker images,但似乎没有相应的docker containers命令。

除了变成root用户并查看/var/lib/docker之外,似乎没有其他方法可以做到。我是否忽略了某些东西?这是不应该做的事情吗?


在 Stack Overflow 上有类似的问题 https://dev59.com/4FkT5IYBdhLWcg3wh_7s#38464973 - Yogesh D
14个回答

1848

要仅显示正在运行的容器,请使用以下命令:

docker ps

显示所有容器,请使用以下命令:

docker ps -a

要显示最新创建的容器(包括所有状态),请使用以下命令:

docker ps -l

要显示最近创建的 n 个容器(包括所有状态),请使用以下命令:

docker ps -n=-1

使用以下命令显示总文件大小

docker ps -s

上述内容来自docker.com

在新版Docker中,命令已更新,并添加了一些管理命令:

docker container ls

它被用于列出所有正在运行的容器。

docker container ls -a

然后,如果您想要将它们全部清除,

docker rm $(docker ps -aq)

它用于列出所有已创建的容器,无论其状态如何。

并停止所有Docker容器(强制)

docker rm -f $(docker ps -a -q)  

这里的容器是管理命令。


@RutgerHofste,docker rmdocker ps这两个命令在Docker的帮助文档中都有列出。 - Munchkin
19
清理所有不必要的项目(如悬挂的容器、未使用的镜像、日志等)的另一种有用方法是使用 docker system prune --all 命令。您可以在此处找到 Docker 文档:https://docs.docker.com/engine/reference/commandline/system_prune/#usage。 - Arun Thundyill Saseendran
在拉取了一个镜像之后,使用 ps -a 命令无法列出该镜像。似乎只能列出至少运行过一次的镜像? - ftravers
docker ps lists all running and paused containers. To list only the running ones: docker ps --filter="status=running" - WindyFields
@ftravers docker ps 只显示有关容器的信息。您想要的是有关镜像的信息。您可以使用 docker images 命令查看所有本地镜像。 - Paul

153
列出所有正在运行和停止的容器。
docker ps -a

列出所有正在运行的容器(只是显而易见的,并且也是 -f 过滤选项的示例用法)

docker ps -a -f status=running
列出所有正在运行和已停止的容器,仅显示它们的容器ID。
docker ps -aq

移除所有未运行的容器

docker rm `docker ps -aq -f status=exited`

32
请注意,此命令在一段时间之前已更新。它默认不会显示容器大小(因为这对于许多正在运行的容器来说开销较大)。使用docker ps -s也可以显示容器大小。

根据mrh的下面的回答,您还需要使用-a开关来查看未运行的容器(这很可能是您想要删除的容器),因此最终命令是docker ps -as(如果守护程序以root身份运行,请不要忘记添加sudo前缀)。 - Anthony DiSanti

21

命令docker ps -s将仅显示正在运行的容器的大小。

要检查所有容器的大小,请使用docker ps -as


20

还有以下选项:

docker container ls
docker container ls -a
# --all, -a
# Show all containers (default shows just running)

自:1.13.0 (2017-01-18)

通过添加docker imagedocker container命令来重构CLI命令,以实现更一致性 #26025

正如介绍Docker 1.13中所述,鼓励用户采用新的语法:

CLI 重构

在 Docker 1.13 中,我们重新组织了每个命令,使其均属于与之交互的逻辑对象下。例如,容器的 liststart 现在是 docker container 的子命令,而 historydocker image 的子命令。

这些更改让我们清理了 Docker CLI 语法,改进了帮助文本,并使 Docker 更加易于使用。旧的命令语法仍然受支持,但我们鼓励所有人采用新的语法


1
很棒的信息,可惜 docker --help 在输出中建议界面在三页之前,被废弃的命令隐藏起来了! - danio

18

Docker命令集简单易懂,各个命令之间相互配合紧密:

docker stack ls
docker service ls
docker image ls
docker container ls

首先教别名容易让人困惑。一旦你理解了发生了什么,它们可以节省一些按键:

docker images -> docker image ls
docker ps -> docker container ls
docker rmi -> docker image rm
docker rm -> docker container rm

Docker 中有几个别名,例如:

docker rmi
docker image rm
docker image rmi
docker image remove

都是相同的命令(使用docker help image rm可以自己查看)。


15

仅列出容器的SHA1:

docker ps -aq --no-trunc
那样,您可以使用包含所有容器的列表执行其他命令(这些命令接受多个容器ID作为参数)。
例如,要列出所有容器的名称(因为docker ps 仅列出其名称与其他信息):
docker inspect --format='{{.Name}}' $(sudo docker ps -aq --no-trunc)

7

有多种方法可以列出所有容器。

您可以使用3个别名ls、ps、list进行查找,如下所示。

sudo docker container ls 
sudo docker container ps
sudo docker container list
sudo docker ps
sudo docker ps -a

你可以使用“give”选项[option]
选项-:
  -a, --all             Show all containers (default shows just running)
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print containers using a Go template
  -n, --last int        Show last created containers (includes all states) (default -1)
  -l, --latest          Show the latest created container (includes all states)
      --no-trunc        Don't truncate output
  -q, --quiet           Only display numeric IDs
  -s, --size            Display total file sizes

您可以使用这样的选项:
sudo docker ps //Showing only running containers
sudo docker ps -a //All container (running + stopped)
sudo docker pa -l // latest
sudo docker ps -n <int valuse 1,2,3 etc>// latest number of created containers
sudo docker ps -s // Display container with size
sudo docker ps -q // Only display numeric IDs for containers
docker docker ps -a | tail -n 1 //oldest container

为了以整洁的输出显示docker container list命令:docker container list --format 'table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.RunningFor}}\t{{.Status}}\t{{.Networks}}\t{{.Ports}}' | awk 'NR<2{print $0;next}{print $0 | "sort --key=2"}' | awk 'BEGIN{FS=OFS="[[:space:]][[:space:]]+"} gsub("0.0.0.0:", "", $7) gsub(",?:::[^,]+", "", $7) gsub(" , "," ",$7) sub(", $", "", $7) sub(".*/.*/", "", $3) sub("minutes","m",$4) sub("minutes","m",$5) sub("hours","h",$4) sub("hours","h",$5) sub("ago","",$4) {printf("%-15s%-22s%-38s%-16s%-22s%-21s%s\n",$1" ",$2" ",$3" ",$4" ",$5" ",$6" ",$7)}' - Tim Chaubet
为了以整洁的输出显示docker container list命令:docker container list --format 'table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.RunningFor}}\t{{.Status}}\t{{.Networks}}\t{{.Ports}}' | awk 'NR<2{print $0;next}{print $0 | "sort --key=2"}' | awk 'BEGIN{FS=OFS="[[:space:]][[:space:]]+"} gsub("0.0.0.0:", "", $7) gsub(",?:::[^,]+", "", $7) gsub(" , "," ",$7) sub(", $", "", $7) sub(".*/.*/", "", $3) sub("minutes","m",$4) sub("minutes","m",$5) sub("hours","h",$4) sub("hours","h",$5) sub("ago","",$4) {printf("%-15s%-22s%-38s%-16s%-22s%-21s%s\n",$1" ",$2" ",$3" ",$4" ",$5" ",$6" ",$7)}' - undefined

5

仅显示正在运行的容器

docker ps

显示所有容器(包括所有状态)

docker ps -a

显示最新创建的容器(包括所有状态)

docker ps -l

显示最近创建的n个容器(包括所有状态)

docker ps -n=-1

显示总文件大小

docker ps -s

在Docker的新版本中,更新了一些命令并添加了一些管理命令:

docker container ls

列出所有正在运行的容器。

docker container ls -a


5

列出 正在运行 的容器:

$ docker ps

列出所有容器:

$ docker ps -a

仅列出已停止的容器:

$ docker ps --filter "status=exited"

或者

$ docker ps -f "status=exited"


2
这些命令已经被多次发布了 - 重复其他答案的原因是什么? - Nico Haase
@NicoHaase 可能是为了收集赞。正如你所指出的,已经有4个人点赞了这个回答,但它并没有贡献任何新内容。不过,我会给你的评论点一个+1 :-) - András Aszódi

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