如何列出Docker容器

时间:2020-03-05 15:25:22  来源:igfitidea点击:

我们如何列出系统上存在的所有Docker容器?

有两种方法可以这样做:

  • 使用"docker ps""命令(旧和流行的方法)
  • 使用"docker container"命令"(更新和较少的已知方法)

让我快速列出最常见的例子的命令,以便快速参考。

PS命令Docker命令命令显示
docker psdocker container ls运行的容器
docker ps -adocker container ls -a所有容器
docker ps
-f "status=exited"
docker container ls
-f "status=exited"
停止的容器
docker ps -qdocker container ls -q运行容器的ID
docker ps -ldocker container ls -l最新创建的容器

如我们所见,"PS"和"Container"命令"都与其选项相同。

但是,由于Docker想要正确组织命令,因此他们建议使用"docker容器ls"命令"。

因此,我将在详细示例中使用"docker容器ls"命令"。

显示运行的Docker容器

没有任何选项,我们只能看到运行的容器。

docker container ls

输出是一个详细的输出:

Hyman@theitroad:~$docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
f03e48cb07ea        ubuntu              "bash"              8 seconds ago       Up 6 seconds                            ubuntu-c-1
93f84eb0f579        alpine              "/bin/sh"           23 seconds ago      Up 22 seconds                           alp_con2

如果这是我们第一次看到此输出,请让我解释输出的不同元素:
-“Container ID”-标识容器的唯一数字标识
-Image-创建容器的Docker映像
-Command—启动容器时执行的默认命令
-“Created”-创建容器的相对时间
-“Status”-容器的状态(稍后将解释)
-“PORTS”-容器的已发布端口
-Name—容器的名称。如果未提供任何名称,则仍会指定一个随机名称。

列出所有Docker容器

如果要查看系统上的所有容器,请使用选项-a

docker container ls -a

这是一个示例输出,我们可以看到它也显示出几个停止的容器。

Hyman@theitroad:~$docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
f03e48cb07ea        ubuntu              "bash"              37 minutes ago      Up 37 minutes                                ubuntu-c-1
93f84eb0f579        alpine              "/bin/sh"           37 minutes ago      Up 37 minutes                                alp_con2
1c1c04a84186        alpine              "bash"              38 minutes ago      Created                                      alp_con
6fbc4bf4897b        ubuntu              "/bin/bash"         2 hours ago         Exited (0) 2 hours ago                       fervent_hofstadter
8b9565ba7661        alpine              "/bin/sh"           2 hours ago         Exited (0) 2 hours ago                       beautiful_williamson
853e748608bc        hello-world         "/hello"            2 hours ago         Exited (0) 2 hours ago                       stoic_engelbart

显示仅停止容器

如果要仅列出停止的容器,则可以过滤"退出"状态的输出。

docker container ls --filter "status=exited"

这是过滤的输出:

Hyman@theitroad:~$docker container ls --filter "status=exited"
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
6fbc4bf4897b        ubuntu              "/bin/bash"         2 hours ago         Exited (0) 2 hours ago                       fervent_hofstadter
8b9565ba7661        alpine              "/bin/sh"           2 hours ago         Exited (0) 2 hours ago                       beautiful_williamson
853e748608bc        hello-world         "/hello"            2 hours ago         Exited (0) 2 hours ago                       stoic_engelbart

"退出的"状态是停止容器。
容器有几个可以用于不同目的的容器的状态:
-“created”-已创建但未启动的容器
-“restarting”-正在重新启动的容器
-“running”-正在运行的容器
-“paused”-进程已暂停的容器
-“exited”-已停止的容器
-“dead”-试图停止但失败的容器

实际上,过滤不限于状态,可以基于容器列表输出的其他元素过滤,如容器ID,名称或者图像。

显示与图像相关联的容器

我们可以使用过滤器显示仅使用"祖先"过滤器与某个图像关联的所有容器。

docker container ls -a --filter "ancestor=image_name"

这是一个输出,显示与Alpine Linux的Docker图像关联的所有容器。

Hyman@theitroad:~$docker container ls -a --filter "ancestor=alpine"
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
93f84eb0f579        alpine              "/bin/sh"           48 minutes ago      Up 48 minutes                                alp_con2
1c1c04a84186        alpine              "bash"              49 minutes ago      Created                                      alp_con
8b9565ba7661        alpine              "/bin/sh"           2 hours ago         Exited (0) 2 hours ago                       beautiful_williamson

仅显示容器ID

我们是否注意到所有上述命令都在容器上有详细的输出?

如果我们不需要像容器名称这样的添加信息,关联的图像,其状态,则可以使用安静的选项-Q

例如,如果我在前面的示例中使用"-Q"选项,则它只为我提供与ALPINE Linux关联的所有容器的ID。

Hyman@theitroad:~$docker container ls -a -q --filter "ancestor=alpine"
93f84eb0f579
1c1c04a84186
8b9565ba7661

这在删除了Docker图像的所有容器的情况下方便。