如何使用 docker service inspect 命令查看服务详情

DockerDockerBeginner
立即练习

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

简介

在这个实验中,你将学习如何使用 docker service inspect 命令查看 Docker 服务的详细信息。你将探索检查服务的不同方法,包括按服务名称和唯一 ID 进行检查。

此外,你将了解如何使用 --pretty--format 选项来格式化 docker service inspect 命令的输出,从而控制服务信息的详细程度和呈现方式。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") subgraph Lab Skills docker/ls -.-> lab-555225{{"如何使用 docker service inspect 命令查看服务详情"}} docker/inspect -.-> lab-555225{{"如何使用 docker service inspect 命令查看服务详情"}} docker/create -.-> lab-555225{{"如何使用 docker service inspect 命令查看服务详情"}} end

按名称检查服务

在这一步中,你将学习如何按名称检查 Docker 服务。docker service inspect 命令可提供有关服务的详细信息,包括其配置、任务和网络设置。

首先,让我们创建一个简单的服务来进行检查。我们将使用 nginx 镜像创建一个名为 my-web-service 的服务。由于未预先安装 Docker Compose,我们将直接使用 docker service create 命令。

docker service create --name my-web-service nginx

你应该会看到表明服务已创建的输出。如果你的系统上尚未存在 nginx 镜像,Docker 将拉取该镜像。

现在服务已创建,你可以使用 docker service inspect 命令并在其后跟上服务名称,按名称检查该服务。

docker service inspect my-web-service

此命令将输出一个大型 JSON 对象,其中包含有关 my-web-service 的所有详细信息。这个输出可能会非常冗长,能让你深入了解服务的配置和状态。

按 ID 检查服务

在上一步中,你学习了如何按名称检查服务。Docker 还会为每个服务分配一个唯一的 ID。你也可以使用这个 ID 来检查服务。当你有多个名称相似的服务时,或者在编写脚本时,这尤其有用。

首先,让我们获取上一步中创建的 my-web-service 的 ID。你可以使用 docker service ls 命令列出所有正在运行的服务及其 ID。

docker service ls

输出将显示一个表格,包含 IDNAMEMODEREPLICASIMAGE 等列。ID 列包含每个服务的唯一标识符。复制 my-web-service 的 ID,它将是一串字符。

现在,使用 docker service inspect 命令,后面跟上你复制的服务 ID。将 <SERVICE_ID> 替换为实际的 ID。

docker service inspect <SERVICE_ID>

你将看到与按名称检查时相同的详细 JSON 输出。这表明你可以使用服务名称或其 ID 来获取检查详情。使用 ID 通常更精确,特别是在自动化脚本中。

使用 --pretty 格式化输出

在前面的步骤中,你已经看到 docker service inspect 的默认输出是一个大型的 JSON 对象。虽然这个格式内容全面,但要快速浏览查看时,可能会比较难读。Docker 提供了 --pretty 标志,用于以更易于人类阅读的格式输出信息。

让我们再次检查 my-web-service,这次使用 --pretty 标志。

docker service inspect --pretty my-web-service

你会注意到,现在的输出格式更易于浏览和理解。它以结构化的布局呈现关键信息,如服务 ID、名称、模式、副本数量和镜像,而不是原始的 JSON 转储。这对于快速检查服务的状态和基本配置非常有用。

--pretty 标志是一种便捷的方式,可以在不解析完整 JSON 输出的情况下获取服务详细信息的摘要。

使用 --format 格式化输出

虽然 --pretty 提供了易于人类阅读的摘要,但 --format 标志允许你使用 Go 模板语法对输出格式进行细粒度控制。这在提取特定信息片段,或者为脚本编写或报告格式化输出时非常强大。

Go 模板语法允许你访问 inspect 命令的 JSON 输出中的字段。例如,要仅获取服务 ID 和名称,你可以使用类似 {{.ID}} {{.Spec.Name}} 的格式字符串。

让我们尝试检查 my-web-service 并格式化输出,使其仅显示服务 ID 和名称。

docker service inspect --format '{{.ID}} {{.Spec.Name}}' my-web-service

你应该会看到类似于以下的输出:

<SERVICE_ID> my-web-service

其中 <SERVICE_ID> 是你的服务的实际 ID。

你可以使用点号访问嵌套字段。例如,要获取镜像名称,你可以使用 {{.Spec.TaskTemplate.ContainerSpec.Image}}

让我们再尝试一个示例,以获取服务名称及其使用的镜像。

docker service inspect --format 'Service Name: {{.Spec.Name}}, Image: {{.Spec.TaskTemplate.ContainerSpec.Image}}' my-web-service

输出将是:

Service Name: my-web-service, Image: nginx

--format 标志非常灵活,允许你根据特定需求定制输出。你可以查看完整的 JSON 输出(不使用 --pretty--format),以了解其结构并确定你想要提取的字段。

总结

在本次实验中,你学习了如何使用 docker service inspect 命令查看 Docker 服务的详细信息。你通过名称来检查服务进行了实践,首先使用 docker service create 创建了一个名为 my-web-service 的简单 nginx 服务,然后使用 docker service inspect my-web-service 以 JSON 格式检索其配置和状态。

你还学习了如何使用服务的唯一 ID 来检查服务。通过使用 docker service ls 查找服务 ID,你可以使用 docker service inspect <SERVICE_ID> 来获取相同的详细信息,这展示了一种检查服务的替代方法,在编写脚本或名称不明确时特别有用。