您如何列出系统上存在的所有 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
– 用于识别容器的唯一数字 IDImage
– 创建容器的 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 中列出容器的用例。 继续订阅更多此类教程。