如何列出 Docker 容器

您如何列出系统上存在的所有 docker 容器?

有两种方法可以做到这一点:

  • 使用 docker ps 命令(旧的和流行的方法)
  • 使用 docker container 命令(较新且鲜为人知的方法)

让我快速列出命令以及最常见的示例,以供您快速参考。

ps 命令容器命令命令显示
码头工人ps码头集装箱 ls运行容器
码头工人ps -a码头集装箱 ls -a所有容器
码头工人ps
-f“状态=退出”
码头集装箱 ls
-f“状态=退出”
停止的容器
码头工人ps -q码头集装箱 ls -q正在运行的容器ID
码头工人ps -l码头集装箱 ls -l最新创建的容器

如您所见,这两个命令与其选项相同。

但是,由于 docker 想要正确组织命令,他们建议使用 docker container ls 命令。

出于这个原因,我将使用 docker container ls 尽管 docker ps 命令更流行和广泛使用,但详细示例中的命令。

显示正在运行的 docker 容器

如果没有任何选项,您将只能看到正在运行的容器。

docker container ls

输出是详细的:

[email protected]:~$ 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 – 用于识别容器的唯一数字 ID
  • Image – 创建容器的 Docker 映像
  • Command – 启动容器时执行的默认命令
  • Created – 创建容器的相对时间
  • Status – 容器的状态(后面会解释)
  • Ports – 已发布的容器端口
  • Name – 容器的名称。 如果没有提供,则无论如何都会分配一个随机名称。

列出所有 docker 容器

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

docker container ls -a

这是一个示例输出,您可以看到现在它还显示了几个停止的容器。

[email protected]:~$ 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

仅显示停止的容器

如果您只想列出停止的容器,您可以过滤输出 exited 地位。

docker container ls --filter "status=exited"

这是过滤后的输出:

[email protected]:~$ 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

exited state 用于停止的容器。 您可以将容器用于不同目的的更多状态:

  • created – 已创建但未启动的容器
  • restarting – 正在重启的容器
  • running – 一个正在运行的容器
  • paused – 进程已暂停的容器
  • exited – 一个停止的容器
  • dead – 试图停止但失败的容器

事实上, 过滤 不限于状态,您可以根据容器列表输出的其他元素(如容器 id、名称或图像)进行过滤。 下一个 example 使用这个概念。

显示与图像关联的容器

您可以使用过滤器来显示与特定图像关联的所有容器,仅使用 ancestor 筛选。

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

这是一个输出,显示了与 docker 镜像关联的所有容器 高山 Linux.

[email protected]:~$ 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

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

如果您不需要容器名称、关联图像、其状态等附加信息,您可以使用 quiet 选项 -q.

为了 example,如果我使用 -q 上一个选项 example,它只给了我与 Alpine Linux 相关的所有容器的 ID。

[email protected]:~$ docker container ls -a -q --filter "ancestor=alpine"
93f84eb0f579
1c1c04a84186
8b9565ba7661

这在删除 docker 镜像的所有容器等情况下很方便。

好吧,这对于这个 docker 教程来说已经足够了。 我想我已经提到了足够多的在 docker 中列出容器的用例。 继续订阅更多此类教程。