在 Kubernetes 集群环境中使用哪一个来创建资源?
2024年3月17日在 Linux 命令行中查找最大的文件和文件夹
2024年3月17日如何列出系统上存在的所有 docker 容器?
有两种方法可以做到这一点:
- 使用
docker ps
命令(较旧且流行的方法) - 使用
docker container
命令(较新且鲜为人知的方法)
让我快速列出命令和最常见的示例,以供您快速参考。
ps 命令 | 容器命令 | 命令显示 |
---|---|---|
码头工人 | docker 容器 ls | 运行容器 |
docker ps -a | docker 容器 ls -a | 所有集装箱 |
docker ps -f“状态=已退出” |
docker 容器 ls -f "status=exited" |
停止的容器 |
docker ps -q | docker 容器 ls -q | 正在运行的容器ID |
docker ps -l | docker 容器 ls -l | 最新创建的容器 |
如您所见,这两个命令及其选项相同。
但是,由于 docker 希望正确组织命令,因此他们建议使用docker container ls
命令。
因此,我将docker container ls
在详细示例中使用命令,即使docker ps 命令更流行且使用更广泛,但我将在详细示例中使用命令。
显示正在运行的 docker 容器
如果没有任何选项,您将只能看到正在运行的容器。
docker container ls
输出是详细的:
如果这是您第一次看到此输出,请让我解释一下输出的不同元素:
Container ID
- 识别容器的唯一数字IDImage
- 创建容器的 Docker 镜像Command
- 启动容器时执行的默认命令Created
- 容器创建的相对时间Status
- 容器的状态(稍后会解释)Ports
- 容器的已发布端口Name
- 容器的名称。如果没有提供,无论如何都会分配一个随机名称。
列出所有docker容器
如果您想查看系统上的所有容器,请使用选项-a
。
docker container ls -a
这是一个示例输出,您可以看到它现在还显示了几个已停止的容器。
仅显示停止的容器
如果您只想列出已停止的容器,您可以根据状态过滤输出exited
。
docker container ls --filter "status=exited"
这是过滤后的输出:
abhishek@handbook:~$ 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
状态适用于已停止的容器。容器还有其他一些状态,您可以将其用于不同的目的:
created
- 已创建但未启动的容器restarting
- 正在重新启动的容器running
- 一个正在运行的容器paused
- 进程已暂停的容器exited
- 停止的容器dead
- 试图停止但失败的容器
事实上,过滤不仅限于状态,您还可以根据容器列表输出的其他元素(例如容器 ID、名称或图像)进行过滤。下一个示例将使用这个概念。
显示与图像关联的容器
您可以使用过滤器仅使用过滤器来显示与特定图像关联的所有容器ancestor
。
docker container ls -a --filter "ancestor=image_name"
下面的输出显示了与Alpine Linux的 docker 镜像关联的所有容器。
abhishek@handbook:~$ 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
。
例如,如果我使用-q
前面示例中的选项,它只会向我提供与 Alpine Linux 关联的所有容器的 ID。
abhishek@handbook:~$ docker container ls -a -q --filter "ancestor=alpine"
93f84eb0f579
1c1c04a84186
8b9565ba7661
这在删除 docker 镜像的所有容器等情况下非常方便。
好了,对于这个 docker 教程来说就足够了。我想我已经提到了足够多的在 docker 中列出容器的用例。继续订阅更多此类教程。