如何使用 docker context inspect 命令查看上下文详情

DockerDockerBeginner
立即练习

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

简介

在本实验中,我们将探索如何使用 docker context inspect 命令查看 Docker 上下文(context)的详细信息。Docker 上下文对于管理不同 Docker 守护进程(daemon)的连接至关重要。我们将首先检查默认的 Docker 上下文,该上下文连接至本地守护进程。

随后,我们会创建一个新的上下文用于演示,并通过名称使用 docker context inspect 来查看其详细信息。最后,我们将学习如何以不同方式格式化 inspect 命令的输出,特别是以 JSON 格式和使用 Go 模板(template),从而提取上下文的特定信息。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") subgraph Lab Skills docker/inspect -.-> lab-555132{{"如何使用 docker context inspect 命令查看上下文详情"}} docker/create -.-> lab-555132{{"如何使用 docker context inspect 命令查看上下文详情"}} end

检查默认 Docker 上下文

在这一步骤中,我们将探索默认的 Docker 上下文(context)。Docker 上下文是一种管理不同 Docker 守护进程(daemon)连接的方式。默认情况下,Docker 使用名为 default 的上下文,该上下文连接至本地 Docker 守护进程。

要检查默认的 Docker 上下文,我们使用 docker context inspect 命令,后跟上下文名称。

docker context inspect default

此命令将输出关于 default 上下文的详细信息,包括其端点(endpoint)、类型以及其他配置细节。输出将以 JSON 格式呈现。

[
  {
    "Name": "default",
    "Current": true,
    "Endpoint": {
      "Docker": {
        "Host": "unix:///var/run/docker.sock"
      }
    },
    "Metadata": {},
    "Storage": "meta/contexts/default"
  }
]

输出显示 default 上下文是当前上下文("Current": true),其端点设置为 unix:///var/run/docker.sock,这是 Linux 系统上 Docker 守护进程的默认 Unix 套接字(socket)。

创建演示用新上下文

在这一步骤中,我们将创建一个新的 Docker 上下文(context)。创建新上下文可以让你定义连接到不同的 Docker 守护进程(daemon),这些守护进程可能位于远程机器或同一台机器的不同配置上。为了演示目的,我们将创建一个仍然指向本地 Docker 守护进程的上下文,但会使用不同的名称。

要创建新上下文,我们使用 docker context create 命令,后跟新上下文的名称和端点(endpoint)信息。由于我们连接的是本地守护进程,端点将与默认上下文相同:unix:///var/run/docker.sock

让我们创建一个名为 my-context 的新上下文。

docker context create my-context --docker "host=unix:///var/run/docker.sock"

运行此命令后,你应该会看到表明上下文已创建的输出。

my-context

这确认了名为 my-context 的新上下文已成功创建,并指向本地 Docker 守护进程。

按名称检查新创建的上下文

在上一步中,我们创建了一个名为 my-context 的新 Docker 上下文。现在,让我们检查这个新创建的上下文以查看其详细信息。与检查默认上下文类似,我们使用 docker context inspect 命令,但这次需要指定新上下文的名称。

docker context inspect my-context

该命令将显示我们刚创建的 my-context 的配置详情。输出同样会以 JSON 格式呈现。

[
  {
    "Name": "my-context",
    "Current": false,
    "Endpoint": {
      "Docker": {
        "Host": "unix:///var/run/docker.sock"
      }
    },
    "Metadata": {},
    "Storage": "meta/contexts/my-context"
  }
]

注意 my-context 的输出与 default 上下文相似,因为两者都指向本地 Docker 守护进程。不过,my-context"Current" 字段值为 false,表示这不是当前活跃的上下文。default 上下文仍然是当前活跃的上下文。

检查上下文并以 JSON 格式输出

在这一步中,我们将明确要求 docker context inspect 命令的输出为 JSON 格式。虽然默认输出已经是 JSON 格式,但当你特别需要 JSON 输出时(例如将输出传递给其他工具进行处理),使用 --format json 标志是一个良好的实践。

我们将检查上一步创建的 my-context 并以 JSON 格式输出结果。

docker context inspect my-context --format json

该命令将产生与上一步相同的 JSON 输出,但它明确展示了如何使用 --format 标志来指定输出格式。

[
  {
    "Name": "my-context",
    "Current": false,
    "Endpoint": {
      "Docker": {
        "Host": "unix:///var/run/docker.sock"
      }
    },
    "Metadata": {},
    "Storage": "meta/contexts/my-context"
  }
]

当你需要以编程方式解析 Docker 命令的输出时,使用 --format json 标志特别有用。

使用 Go 模板检查上下文并格式化输出

在这最后一步中,我们将探索如何使用 Go 模板来格式化 docker context inspect 的输出。这是一个强大的功能,允许你从 JSON 输出中提取特定信息并以自定义格式显示。

我们将检查 my-context 并使用 Go 模板仅显示上下文名称和 Docker 主机端点。模板语法使用双花括号 {{ }} 来包裹表达式。我们可以使用点号表示法访问 JSON 输出中的字段,例如 .Name 表示上下文名称,.Endpoint.Docker.Host 表示 Docker 主机端点。

docker context inspect my-context --format '{{.Name}}: {{.Endpoint.Docker.Host}}'

该命令将使用提供的 Go 模板来格式化输出。你应该能看到上下文名称及其 Docker 主机端点。

my-context: unix:///var/run/docker.sock

这展示了如何使用 Go 模板来自定义 Docker 命令的输出,从而更轻松地提取和处理特定数据。

总结

在本实验中,我们学习了如何使用 docker context inspect 命令查看 Docker 上下文的详细信息。我们首先检查了默认上下文,该上下文连接至本地 Docker 守护进程。随后,我们创建了一个名为 my-context 的新上下文用于演示,同样指向本地守护进程。

我们进一步探索了 docker context inspect 命令,通过名称检查新创建的上下文。最后,我们演示了如何以不同方式格式化 inspect 命令的输出,特别是以 JSON 格式和使用 Go 模板,从而提取并显示上下文的特定信息。