如何列出Docker容器
我们如何列出系统上存在的所有Docker容器?
有两种方法可以这样做:
- 使用"docker ps""命令(旧和流行的方法)
- 使用"docker container"命令"(更新和较少的已知方法)
让我快速列出最常见的例子的命令,以便快速参考。
PS命令 | Docker命令 | 命令显示 |
---|---|---|
docker ps | docker container ls | 运行的容器 |
docker ps -a | docker container ls -a | 所有容器 |
docker ps -f "status=exited" | docker container ls -f "status=exited" | 停止的容器 |
docker ps -q | docker container ls -q | 运行容器的ID |
docker ps -l | docker 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图像的所有容器的情况下方便。