如何使用 docker container ls 命令列出容器

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,你将学习如何高效使用 docker container ls 命令(也称为 docker ps)来列出和管理你的 Docker 容器。首先你将仅列出当前正在运行的容器,然后扩展视图以包含所有容器(包括已停止的容器)。

此外,你将探索如何根据状态、名称等多种条件筛选容器列表,从而快速定位特定容器。最后,你将学习如何显示容器大小等附加信息,并根据需求格式化输出结果,全面掌握你的容器运行状况。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555114{{"如何使用 docker container ls 命令列出容器"}} docker/ps -.-> lab-555114{{"如何使用 docker container ls 命令列出容器"}} docker/stop -.-> lab-555114{{"如何使用 docker container ls 命令列出容器"}} docker/pull -.-> lab-555114{{"如何使用 docker container ls 命令列出容器"}} end

列出运行中的容器

在这一步中,你将学习如何列出正在运行的 Docker 容器。docker ps 命令用于显示运行中容器的相关信息。

首先,让我们运行一个简单的容器并保持其运行状态。我们将使用 ubuntu 镜像并执行一个让容器持续运行的命令。

docker pull ubuntu
docker run -d ubuntu sleep infinity

docker pull ubuntu 命令会从 Docker Hub 下载 ubuntu 镜像。docker run -d ubuntu sleep infinity 命令则基于该镜像运行一个新容器。

  • -d 表示以分离模式运行容器,即在后台运行
  • ubuntu 是镜像名称
  • sleep infinity 是在容器内执行的命令,使容器无限期保持运行状态

现在,让我们使用 docker ps 命令列出运行中的容器。

docker ps

该命令将显示当前所有运行中容器的列表。你应该能看到我们刚启动的 ubuntu 容器。输出信息包含容器 ID、镜像名称、执行的命令、创建时间、状态、端口映射和容器名称等。

显示所有容器(包括已停止的)

在上一步中,你学会了如何使用 docker ps 列出运行中的容器。然而,docker ps 仅显示当前正在运行的容器。要查看所有容器(包括已停止的),你需要使用 -a 参数。

首先,让我们停止上一步启动的 ubuntu 容器。你需要知道容器的 ID 或名称,这些信息可以从 docker ps 的输出中获取。

docker stop $(docker ps -q --filter ancestor=ubuntu)

docker stop 命令用于停止正在运行的容器。

  • $(docker ps -q --filter ancestor=ubuntu) 是一个命令替换,用于获取基于 ubuntu 镜像的运行中容器的 ID。-q 参数表示仅输出容器 ID,--filter ancestor=ubuntu 则按镜像名称进行筛选。

现在,让我们使用 docker ps -a 列出所有容器(包括已停止的)。

docker ps -a

该命令将显示所有已创建的容器列表,无论它们当前处于何种状态(运行中、已停止、已退出等)。你应该能看到列出的 ubuntu 容器,其状态应为 "Exited"(已退出)。

按状态和名称筛选容器

在这一步中,你将学习如何结合 docker ps 命令使用 --filter 参数,根据容器状态和名称来筛选容器列表。当你管理多个容器并需要查找特定容器时,这个功能非常实用。

首先,让我们启动另一个容器,但这次我们会为它指定一个名称。

docker run -d --name my-nginx nginx

docker run -d --name my-nginx nginx 命令基于 nginx 镜像以分离模式运行一个新容器,并将其命名为 my-nginx

  • 这里不需要显式执行 docker pull nginx,因为如果本地没有该镜像,docker run 会自动拉取。

现在,让我们使用状态筛选器来仅列出运行中的容器。

docker ps --filter status=running

该命令将只显示当前处于 "running"(运行中)状态的容器。你应该能看到列出的 my-nginx 容器。

接下来,我们按名称筛选容器。

docker ps -a --filter name=my-nginx

该命令会列出所有名称为 my-nginx 的容器(由于使用了 -a 参数,包括已停止的容器)。你应该能看到 my-nginx 容器及其状态信息。

你还可以组合多个筛选条件。例如,要列出特定名称且正在运行的容器:

docker ps --filter status=running --filter name=my-nginx

只有当 my-nginx 容器当前处于运行状态时,这条命令才会显示它。

显示容器大小并格式化输出

在这一步中,你将学习如何显示容器大小以及格式化 docker ps 命令的输出。了解容器大小有助于管理磁盘空间。

默认情况下,docker ps 不会显示容器大小。要包含大小信息,可以使用 --size 参数。

docker ps -a --size

该命令将列出所有容器(运行中和已停止的),并包含两个与大小相关的列:SIZE(容器可写层的大小)和 VIRTUAL SIZE(容器的总大小,包括镜像层)。

有时 docker ps 的默认输出格式可能不符合你的需求。你可以使用 --format 参数来格式化输出,该参数接受一个 Go 模板字符串。

例如,要仅显示容器 ID、镜像名称和状态,可以使用以下命令:

docker ps -a --format "{{.ID}}\t{{.Image}}\t{{.Status}}"

在这个格式字符串中:

  • {{.ID}} 表示容器 ID
  • {{.Image}} 表示镜像名称
  • {{.Status}} 表示容器状态
  • \t 是制表符,用于分隔各列

你也可以在格式化输出中包含大小信息:

docker ps -a --format "{{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Size}}"

该命令将显示容器 ID、镜像、状态和大小。{{.Size}} 字段包含可写层大小和虚拟大小。

你可以尝试在格式字符串中使用不同的字段来自定义输出。其他有用的字段包括 {{.Names}}{{.CreatedAt}}{{.Ports}}

总结

在本实验中,你学习了如何使用 docker ps 命令来列出 Docker 容器。首先通过以分离模式运行一个简单的 ubuntu 容器,然后使用 docker ps 仅列出运行中的容器。接着在停止之前创建的容器后,你学会了如何通过给 docker ps 命令添加 -a 参数来显示所有容器(包括已停止的)。