快速掌握 `docker ps` 命令 – wiki基地


快速掌握 docker ps 命令:Docker 容器状态查看与管理核心

在容器化技术日益普及的今天,Docker 已经成为开发者和运维人员不可或缺的工具。而要有效地管理和监控你的 Docker 容器,有一个命令是你的兵家必争之地,那就是 docker ps

docker ps 命令,简而言之,就是用来列出 Docker 容器的。但它的功能远不止于此。掌握 docker ps 的各种选项、过滤和格式化技巧,能让你迅速了解容器的运行状态、识别问题、获取容器的关键信息,从而极大地提升你的 Docker 使用效率和故障排查能力。

这篇文章将带你由浅入深,全面解析 docker ps 命令。我们将从最基本的用法开始,逐步探索其丰富的选项、强大的过滤功能以及灵活的格式化能力。通过阅读本文,你将能够快速掌握 docker ps,让它成为你 Docker 工具箱中最锋利的一把“瑞士军刀”。

第一部分:docker ps 是什么?为何如此重要?

什么是 docker ps

如果你熟悉 Linux/Unix 系统,你一定知道 ps 命令,它是用来查看当前系统中正在运行的进程的。docker ps 命令的设计理念与此类似,但它专注于 Docker 容器。

docker ps 命令用于列出 Docker 守护进程(Daemon)当前管理的容器。默认情况下,它只显示正在运行的容器。你可以通过添加各种选项来改变它的行为,例如显示所有状态的容器,或者只显示特定的信息。

为何 docker ps 如此重要?

  1. 状态监控 (Status Monitoring): 它是了解你的容器是否正在运行、是否正常工作的首要手段。通过查看容器的状态,你可以快速判断服务是否可用。
  2. 问题排查 (Troubleshooting): 当容器行为异常(例如停止、频繁重启)时,docker ps -a 可以帮助你看到这些非运行状态的容器,进而通过 docker logsdocker inspect 等命令进一步定位问题。
  3. 信息获取 (Information Retrieval): 你需要容器的 ID 或名称来执行其他操作(如停止、重启、删除、进入容器内部)。docker ps 是获取这些信息的直接途径。
  4. 资源概览 (Resource Overview): 虽然不像 docker stats 提供实时的资源使用情况,但 docker ps 可以显示容器创建时间、运行时间、端口映射等信息,帮助你对容器的整体情况有一个概览。
  5. 自动化与脚本 (Automation and Scripting): 结合其过滤和格式化选项,docker ps 的输出可以很容易地被脚本解析,用于自动化管理任务,例如停止所有非运行的容器。

可以说,docker ps 是你与 Docker 容器世界交互的起点和基础。掌握它,是迈向 Docker 专家之路的第一步。

第二部分:docker ps 的基本用法与默认输出详解

最简单的 docker ps 命令不带任何参数:

bash
docker ps

执行这个命令后,如果你的系统中有正在运行的 Docker 容器,你将看到一个表格状的输出。这个表格包含了关于每个正在运行容器的关键信息。理解这些列的含义是掌握 docker ps 的基础。

让我们详细解析默认输出中的每一列:

列名 英文名称 含义 详细解释
容器 ID CONTAINER ID 容器的唯一标识符(短格式) 每个 Docker 容器都有一个全球唯一的 ID(一个长长的十六进制字符串)。出于方便,docker ps 默认只显示其前 12 个字符。这通常足以在你的系统上唯一标识容器。在其他 Docker 命令中,可以使用短 ID 或完整 ID 来引用容器。
镜像 IMAGE 创建此容器所使用的镜像名称或 ID 显示构建该容器的基础镜像。这通常是镜像名称(例如 ubuntu:latest, nginx, mysql:5.7)或镜像的完整 ID。知道镜像信息对于理解容器的功能和来源至关重要。
命令 COMMAND 容器启动时执行的命令 这是容器启动后在其中运行的进程。这个命令通常在 Dockerfile 中通过 CMDENTRYPOINT 指令指定。它可以是 shell 命令 (/bin/sh -c '...') 或可执行文件及其参数。了解这个命令有助于理解容器的主要功能。
创建时间 CREATED 容器创建距今的时间 显示容器是多久以前创建的。这个信息可以帮助你了解容器的“年龄”,对于跟踪容器的生命周期或查找最近创建/删除的容器很有用。例如,“10 minutes ago”, “3 hours ago”, “2 days ago”。
状态 STATUS 容器的当前运行状态 这是 docker ps 输出中最重要的一列之一。 它详细说明了容器的生命周期阶段。常见的状态包括:
Up <time>: 容器正在运行,后面跟着运行了多久(例如 Up 5 minutes)。
Exited (<exit_code>) <time> ago: 容器已停止运行。括号中的数字是退出码(0 通常表示正常退出,非零表示错误)。后面跟着停止了多久。
Created: 容器已被创建但尚未启动。
Restarting (<exit_code>) <time> ago: 容器正在尝试重启(通常是因为其重启策略)。
Paused: 容器已被暂停。
Dead: 容器处于不可恢复的错误状态(较少见)。
此外,如果镜像定义了健康检查 (HEALTHCHECK),状态信息可能会附加 (healthy), (unhealthy), 或 (starting)
端口映射 PORTS 容器内部端口与宿主机端口的映射关系 如果你在运行容器时使用了 -p--publish 选项进行了端口映射,这一列会显示映射信息。格式通常是 <宿主机IP或接口>:<宿主机端口>-><容器端口>/<协议>。例如,0.0.0.0:80->80/tcp 表示宿主机的 80 端口映射到容器的 80 端口(TCP 协议),并且可以在宿主机的任何 IP 地址上访问。如果没有端口映射,这一列会为空。了解端口映射是访问容器内部服务的关键。
容器名称 NAMES 容器的名称 Docker 会为每个容器生成一个随机的名称,除非你在运行容器时使用 --name 选项指定了名称。例如,happy_pike, vigilant_lamport。使用有意义的名称可以大大提高容器的可管理性,因为名称比 ID 更容易记忆和引用。

默认行为总结:

  • 只显示正在运行的容器。
  • 显示容器的关键元数据。
  • ID 和命令默认会被截断以适应屏幕宽度。

理解了这些基本信息,你就可以通过 docker ps 快速浏览当前活动的容器状态。

第三部分:探索 docker ps 的常用选项 (Flags)

docker ps 的强大之处在于它的各种选项(也称为标志,flags)。这些选项可以修改命令的默认行为,让你能够看到更多信息或以不同的方式呈现信息。下面是一些最常用和重要的选项:

1. 显示所有容器 (-a, --all)

这是 docker ps 最常用的选项之一。还记得默认情况下 docker ps 只显示运行中的容器吗?如果你想看到所有容器,包括已经停止(Exited)、创建(Created)甚至可能出现异常(Dead)的容器,你需要使用 -a--all 选项。

bash
docker ps -a

示例输出:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1b2c3d4e5f6 nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 80/tcp my-nginx
b2c3d4e5f6a1 ubuntu "echo 'Hello, Docker'" 5 hours ago Exited (0) 4 hours ago hello-world-container
c3d4e5f6a1b2 mysql:5.7 "docker-entrypoint.s…" 1 day ago Exited (1) 20 hours ago mysql-db

使用 -a 对于查找停止的容器、检查它们为何停止(看 STATUS 列的退出码)以及进行清理(删除无用的停止容器)至关重要。

2. 只显示容器 ID (-q, --quiet)

有时你可能不关心容器的所有详细信息,而只需要获取容器的 ID 列表。这在编写脚本或与其他 Docker 命令结合使用时非常有用。-q--quiet 选项可以帮你实现这一点。

bash
docker ps -q

这个命令会只输出正在运行容器的 ID,每行一个。

bash
a1b2c3d4e5f6

如果你想获取所有容器(包括停止的)的 ID 列表,可以将 -a-q 结合使用:

bash
docker ps -aq

示例输出:

bash
a1b2c3d4e5f6
b2c3d4e5f6a1
c3d4e5f6a1b2

这个组合 (docker ps -aq) 是 Docker 脚本中非常常见的一种模式,例如用于批量停止或删除容器:

“`bash

停止所有容器

docker stop $(docker ps -aq)

删除所有停止的容器 (需要先停止才能删除)

docker rm $(docker ps -aq -f “status=exited”)
``
*注意:
$(…)` 是 shell 的命令替换语法,表示先执行括号内的命令,并将其输出作为外部命令的参数。*

3. 显示容器大小 (-s, --size)

如果你想了解每个容器占用的磁盘空间,可以使用 -s--size 选项。

bash
docker ps -s

或者显示所有容器的大小:

bash
docker ps -as

示例输出 (添加了 SIZE 列):

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE
a1b2c3d4e5f6 nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 80/tcp my-nginx 0B (virtual 133MB)
b2c3d4e5f6a1 ubuntu "echo 'Hello, Docker'" 5 hours ago Exited (0) 4 hours ago hello-world-container 0B (virtual 77.8MB)
c3d4e5f6a1b2 mysql:5.7 "docker-entrypoint.s…" 1 day ago Exited (1) 20 hours ago mysql-db 200MB (virtual 478MB)

-s 选项会在输出中添加一个 SIZE 列,显示两个值:

  • Size: 这是容器读写层 (Read-Write layer) 的实际大小。这个层包含了容器运行时创建、修改或删除的文件。对于大多数容器来说,这个值可能很小,甚至为 0B,特别是如果容器是无状态的或者没有写入大量数据。
  • Virtual Size: 这是容器的整个文件系统的总大小,包括了读写层和容器基于的所有只读镜像层 (Image layers)。这个值更能反映运行一个容器所需的总磁盘空间(在镜像已经被拉取到本地的情况下)。

4. 显示完整信息 (--no-trunc)

默认情况下,docker ps 会截断容器 ID、镜像 ID(如果显示的话)和命令,以便输出能够更好地适应终端屏幕。如果你需要看到完整的 ID 或命令,可以使用 --no-trunc 选项。

bash
docker ps --no-trunc

结合 -a 可以显示所有容器的完整信息:

bash
docker ps -a --no-trunc

示例输出 (ID 和 COMMAND 列更完整):

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2 nginx "nginx -g 'daemon off;'" 2 hours ago Up 2 hours 80/tcp my-nginx
b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3 ubuntu "/bin/sh -c 'echo 'Hello, Docker' && exit 0'" 5 hours ago Exited (0) 4 hours ago hello-world-container

这对于需要复制完整的容器 ID 进行自动化操作或者详细查看容器启动命令时非常有用。

5. 显示最近创建的容器 (--latest, -l)

这个选项会显示最近创建的容器,无论其状态如何。它只会显示一个容器。

bash
docker ps -l

或者

bash
docker ps --latest

这对于调试刚刚运行失败的容器很有用,你可以快速看到它的状态和退出码。

示例输出 (只显示一个容器):

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3d4e5f6a1b2 mysql:5.7 "docker-entrypoint.s…" 1 day ago Exited (1) 20 hours ago mysql-db

假设这是你系统中最近创建的一个容器,即使它是停止的。

这些常用选项已经能够满足大部分日常使用需求。通过组合不同的选项,你可以获取更精确或更全面的容器列表信息。例如,docker ps -as 显示所有容器及其大小;docker ps -aq --no-trunc 显示所有容器的完整 ID。

第四部分:进阶用法:过滤 (-f) 与格式化 (--format)

掌握了基本选项后,我们进入 docker ps 的更强大特性:过滤(Filtering)和格式化(Formatting)。

1. 使用过滤 (-f, --filter)

在大型 Docker 环境中,你可能有几十甚至上百个容器。直接列出所有容器然后手动查找效率低下。docker ps-f--filter 选项允许你根据各种条件筛选出你感兴趣的容器。

过滤选项的格式通常是 -f <key>=<value>--filter <key>=<value>。你可以指定多个 -f 选项来组合过滤条件(它们之间是 AND 关系)。

以下是一些常用的过滤键 (filter keys) 及其用法:

  • status=<string>: 根据容器的状态进行过滤。

    • docker ps -f "status=running": 只显示运行中的容器 (与默认行为相同,但更明确)。
    • docker ps -f "status=exited": 只显示已停止的容器。
    • docker ps -f "status=created": 只显示已创建但未启动的容器。
    • docker ps -f "status=restarting": 只显示正在重启的容器。
    • 你可以结合 -a 来确保找到所有符合状态的容器:docker ps -a -f "status=exited"。这是查找所有已停止容器的标准方法。
  • name=<string>: 根据容器的名称进行过滤。可以使用精确名称或使用通配符 (*)。

    • docker ps -f "name=my-nginx": 查找名称为 my-nginx 的容器。
    • docker ps -f "name=mysql*": 查找名称以 mysql 开头的容器。
    • docker ps -f "name=*prod*": 查找名称中包含 prod 的容器。
  • id=<string>: 根据容器的 ID 进行过滤。可以使用完整的 ID 或部分 ID(只要足够唯一)。

    • docker ps -f "id=a1b2c3d4e5f6": 查找 ID 为 a1b2c3d4e5f6 的容器。
    • docker ps -f "id=a1b2": 如果 a1b2 能够唯一标识一个容器,则查找该容器。
  • label=<string>: 根据容器的标签进行过滤。Docker 允许你在运行容器时添加标签(--label key=value)。

    • docker ps -f "label=env=production": 查找标签 envproduction 的容器。
    • docker ps -f "label=com.example.version": 查找包含键为 com.example.version 的标签的容器 (不关心值)。
    • 可以组合过滤:docker ps -f "label=env=production" -f "label=service=web": 查找同时满足两个标签的容器。
  • ancestor=<string>: 根据容器使用的镜像进行过滤。<string> 可以是镜像名称、名称:标签、ID 或 ID 的短格式。

    • docker ps -f "ancestor=nginx": 查找所有基于 nginx 镜像(无论标签)的容器。
    • docker ps -f "ancestor=mysql:5.7": 查找所有基于 mysql:5.7 镜像的容器。
    • docker ps -f "ancestor=a1b2c3d4": 查找所有基于 ID 为 a1b2c3d4... 的镜像的容器。
  • publish=<port>publish=<ip>:<port>: 根据容器发布的端口进行过滤。

    • docker ps -f "publish=80": 查找所有发布了容器内部 80 端口的容器。
    • docker ps -f "publish=8080:80": 查找宿主机 8080 端口映射到容器内部 80 端口的容器。
  • expose=<port>: 根据容器暴露(EXPOSE)的端口进行过滤(EXPOSE 仅是元数据,不进行实际发布)。

    • docker ps -f "expose=80": 查找 Dockerfile 中 EXPOSE 了 80 端口的容器。
  • network=<string>: 根据容器连接的网络进行过滤。<string> 可以是网络名称或 ID。

    • docker ps -f "network=my-bridge-network": 查找连接到 my-bridge-network 的容器。
  • is-task=(true|false): 在 Docker Swarm 模式下,过滤是否为 Swarm 服务任务对应的容器。

    • docker ps -f "is-task=true": 只显示 Swarm 服务创建的任务容器。

组合过滤示例:

“`bash

显示所有已停止,且名称包含 “test” 的容器

docker ps -a -f “status=exited” -f “name=test

显示运行中,基于 “ubuntu:latest” 镜像,且暴露了 22 端口的容器

docker ps -f “status=running” -f “ancestor=ubuntu:latest” -f “expose=22”
“`

通过熟练使用过滤选项,你可以快速缩小范围,只关注你需要的容器,这在大型或复杂的 Docker 环境中是必不可少的技能。

2. 使用格式化 (--format)

默认的表格输出对于交互式使用很友好,但如果你想以特定格式输出容器信息(例如用于脚本处理、生成报告),--format 选项就显得非常强大了。

--format 选项使用 Go template 语法来定义输出格式。你可以访问容器对象的各种字段。

基本的格式化语法是 --format '{{.<FieldName>}}',其中 <FieldName> 是你想要显示的容器字段的名称。常用的字段名通常与默认输出的列名相对应,但以点开头并首字母大写:.ID, .Image, .Command, .CreatedAt, .Status, .Ports, .Names, .Size.VirtualSize 等。

如何查看所有可用的字段?

一个简单的方法是使用 {{json .}} 模板,它会以 JSON 格式输出整个容器对象,你可以从中找到所有可访问的字段名:

bash
docker ps --format '{{json .}}' | head -n 1

由于输出可能非常长,我们通常只看第一行或几行来了解结构。

常用格式化示例:

  • 简单字段列表: 只显示容器 ID、名称和状态,用逗号分隔。
    bash
    docker ps --format '{{.ID}},{{.Names}},{{.Status}}'

    示例输出:
    a1b2c3d4e5f6,my-nginx,Up 2 hours
    结合 -a 可以列出所有容器的简单信息。

  • 自定义表格: 创建一个自定义列的表格输出。使用 table 关键字后跟列头和对应的字段。
    bash
    docker ps --format 'table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}'

    注意:\t 是制表符,用于分隔列。

    示例输出:
    CONTAINER ID NAMES STATUS PORTS
    a1b2c3d4e5f6 my-nginx Up 2 hours 80/tcp

    你可以自定义列名:
    bash
    docker ps --format 'table ID\t名称\t状态\t端口映射\t使用的镜像' '{{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}\t{{.Image}}'

  • 更复杂的格式化 (例如,获取状态码): STATUS 字段包含运行时间或退出码,有时你需要单独提取退出码。Go template 允许使用函数,虽然 docker ps 的模板功能不如 docker inspect 强大,但对于 STATUS 字段,你可以尝试解析字符串或者依赖于 docker inspect 获取精确的 ExitCode。不过,对于 docker ps --format,通常直接使用 .Status 字段,或结合 docker inspect 获取更详细的信息。

    一个常见的需求是获取容器名称和退出码(针对已停止容器)。你可以结合过滤和格式化:
    bash
    docker ps -a -f "status=exited" --format '{{.Names}}: {{.Status}}'

    示例输出:
    hello-world-container: Exited (0) 4 hours ago
    mysql-db: Exited (1) 20 hours ago

格式化功能非常灵活,可以根据你的需求定制输出。这对于自动化报告生成、监控数据收集或与其他工具集成非常有帮助。

第五部分:docker ps 在实际场景中的应用与技巧

现在我们将把学到的知识应用到实际场景中,并分享一些使用 docker ps 的实用技巧。

  1. 快速查找特定容器:

    • 你知道容器的名字叫 webserver-proddocker ps -f "name=webserver-prod"
    • 你知道容器的 ID 以 abcd 开头: docker ps -f "id=abcd"
    • 你知道容器是基于 tomcat:latest 镜像运行的: docker ps -f "ancestor=tomcat:latest"
  2. 检查服务是否正在运行:
    bash
    docker ps -f "name=my-database" -f "status=running"

    如果这个命令有输出,说明 my-database 容器正在运行;如果没输出,则表示它不在运行状态(可能已停止、创建中、重启中等)。

  3. 找出所有已停止的容器进行清理:
    bash
    docker ps -a -f "status=exited"

    在确认这些容器不再需要后,你可以获取它们的 ID 并删除:
    bash
    docker rm $(docker ps -aq -f "status=exited")

    注意:-aq 确保只输出 ID,-f "status=exited" 确保只选中停止的容器。

  4. 获取容器 ID 用于其他命令:
    这是 docker ps -q 最常见的用途。

    • 停止名为 my-app 的容器:docker stop $(docker ps -q -f "name=my-app")
    • 查看基于 ubuntu 镜像且正在运行的容器日志:docker logs $(docker ps -q -f "ancestor=ubuntu" -f "status=running")
    • 进入(exec)到名称包含 backend 且正在运行的容器内部执行命令:docker exec $(docker ps -q -f "name=*backend*" -f "status=running") ls /app
  5. 监控容器健康状态:
    如果你的容器定义了健康检查,docker ps 的 STATUS 列会显示 (healthy), (unhealthy), 或 (starting)。你可以过滤它们:
    “`bash
    # 查找所有不健康的容器
    docker ps -f “health=unhealthy”

    查找所有正在健康检查中的容器

    docker ps -f “health=starting”
    ``
    结合
    -a` 可以看到已停止但上次状态是不健康的容器。

  6. 查找某个宿主机端口对应的容器:
    bash
    docker ps -f "publish=8080"

    这将列出所有将宿主机端口 8080 映射到容器的容器。

  7. 列出特定网络中的容器:
    bash
    docker ps -f "network=my-application-network"

    这对于调试网络问题或理解网络拓扑非常有用。

技巧与最佳实践:

  • 始于 docker ps -a: 当你不确定容器是否运行或发生了什么时,总是先尝试 docker ps -a。这会显示所有容器,包括已停止的,让你能看到更完整的画面。
  • 使用有意义的容器名称: 在运行容器时使用 --name 选项指定一个易于记忆和识别的名称。这比使用随机生成的名称或 ID 进行查找和管理要方便得多。
  • 充分利用过滤功能: 不要害怕使用 -f 选项。在复杂的环境中,它是快速定位目标容器的关键。熟记常用的过滤键(status, name, id, ancestor, label, publish)。
  • 结合 -q 进行自动化: 当需要将 docker ps 的输出作为其他命令的输入时,始终使用 -q 选项来获取纯净的容器 ID 列表。
  • 理解 STATUS 列的含义: 熟练区分 Up, Exited, Created, Restarting 等状态,并了解退出码的意义(0 通常表示成功,非零表示失败)。
  • 必要时使用 --no-trunc: 当需要完整的容器 ID 或命令时,记住使用 --no-trunc
  • 练习使用 --format: 尝试使用 --format 选项来创建你自己的定制输出。这不仅可以帮助你更好地理解容器对象的结构,也能为你未来的脚本编写打下基础。

第六部分:docker ps 与其他相关命令的对比

在 Docker 生态系统中,有许多命令可以提供关于容器的信息。docker ps 通常是起点,但了解其他命令的作用及其与 docker ps 的关系也很重要。

  • docker inspect <container>:

    • docker ps: 提供容器的概览信息(ID, 名称, 状态, 端口等),主要用于列出和查找容器。
    • docker inspect: 提供容器的详细配置和运行时状态,包括网络设置、存储卷挂载、环境变量、健康检查结果、完整的退出码、日志路径等。它的输出是结构化的(JSON 格式)。
    • 关系: 你通常先使用 docker ps 找到你想深入了解的容器 ID 或名称,然后使用 docker inspect <容器ID或名称> 来查看其详细信息。
  • docker logs <container>:

    • docker ps: 显示容器的当前状态,但不显示容器内部进程的标准输出和标准错误。
    • docker logs: 用于查看容器化应用程序产生的日志输出。这对于调试应用程序内部问题至关重要。
    • 关系:docker ps 的 STATUS 列显示容器已停止(Exited)且退出码非零,或者容器状态为 restartingunhealthy 时,你很可能会使用 docker logs <容器ID或名称> 来查看容器为什么会停止或异常。
  • docker stats [<container>...]:

    • docker ps: 可以通过 -s 选项显示容器的磁盘使用大小(静态信息)。
    • docker stats: 提供容器实时的资源使用情况,包括 CPU 使用率、内存使用量、网络 I/O、块设备 I/O 等。
    • 关系:docker ps 显示容器运行正常,但你怀疑容器性能有问题或资源消耗过高时,你会使用 docker stats 来查看其实时的资源利用率。
  • docker top <container>:

    • docker ps: 显示容器启动时执行的主命令 (COMMAND 列)。
    • docker top: 显示容器内部当前正在运行的所有进程,类似于在宿主机上对某个容器执行 ps aux 命令。
    • 关系: 当你需要了解容器内部除了主进程之外还有哪些进程在运行,或者主进程是否产生了子进程,可以使用 docker top <容器ID或名称>

这些命令各司其职,但经常结合使用。docker ps 作为一个快速概览和信息获取的入口点,是学习和使用其他容器管理命令的基础。

第七部分:总结与展望

通过本文的学习,我们已经全面探索了 docker ps 命令:

  • 理解了它的基本作用:列出 Docker 容器。
  • 详细解析了默认输出中每一列的含义,特别是关键的 STATUS 列。
  • 掌握了常用的选项,如 -a(显示所有)、-q(只显示 ID)、-s(显示大小)、--no-trunc(显示完整信息)、-l(显示最新)。
  • 深入学习了强大的过滤功能 (-f),能够根据状态、名称、ID、镜像、标签、端口等条件精确查找容器。
  • 学习了灵活的格式化功能 (--format),能够定制输出以适应脚本或报告需求。
  • 通过实际场景示例,了解了如何将 docker ps 应用于查找、监控、故障排查和自动化任务。
  • 对比了 docker psdocker inspect, docker logs, docker stats, docker top 等相关命令,明确了它们各自的作用和相互关系。

docker ps 看起来简单,但其背后蕴含着丰富的功能和使用技巧。熟练掌握它,就像获得了一双“透视眼”,能够让你清晰地看到 Docker 环境中容器的运行状态。

请记住,实践出真知。在自己的 Docker 环境中多运行 docker ps 命令,尝试不同的选项和过滤组合。创建一个几个运行中和几个停止的容器,然后练习使用本文介绍的命令来查找、过滤它们。当你能够自如地使用 docker ps 来获取你需要的信息时,你就已经向精通 Docker 迈进了一大步。

继续探索 Docker 的其他命令,并将 docker ps 作为你管理和调试容器的第一步。祝你在 Docker 的世界里游刃有余!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部