如何使用 docker network inspect 命令查看网络详情

DockerDockerBeginner
立即练习

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

简介

在这个实验中,你将学习如何使用 docker network inspect 命令查看 Docker 网络的详细信息。你将从创建一个自定义的 Docker 网络开始操作。

创建网络后,你将探索不同的方式来检查其配置。这包括使用默认的 JSON 输出、应用 Go 模板进行自定义输出,以及使用详细选项获取更全面的详细信息。最后,你将学习如何同时检查多个网络。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/ls -.-> lab-555176{{"如何使用 docker network inspect 命令查看网络详情"}} docker/inspect -.-> lab-555176{{"如何使用 docker network inspect 命令查看网络详情"}} docker/create -.-> lab-555176{{"如何使用 docker network inspect 命令查看网络详情"}} docker/network -.-> lab-555176{{"如何使用 docker network inspect 命令查看网络详情"}} end

创建自定义 Docker 网络

在这一步中,你将学习如何在 Docker 中创建自定义网络。默认情况下,Docker 提供了几种网络驱动程序,但创建自定义网络可以让你隔离容器并控制它们之间的通信方式。

在创建网络之前,让我们使用 docker network ls 命令检查系统上现有的网络。

docker network ls

你应该会看到一些默认网络,如 bridgehostnone

现在,让我们使用 bridge 驱动程序创建一个名为 my-custom-network 的新自定义网络。bridge 驱动程序是默认的网络驱动程序,适用于大多数用例。

docker network create my-custom-network

执行该命令后,Docker 将创建网络并打印其 ID。

为了验证网络是否已成功创建,请再次运行 docker network ls 命令。

docker network ls

你现在应该会看到 my-custom-network 列在可用网络中。

使用默认的 JSON 格式检查自定义网络

在这一步中,你将学习如何使用 docker network inspect 命令检查 Docker 网络的详细信息。默认情况下,该命令以 JSON 格式输出网络配置,其中包含了关于网络的全面信息,包括其 ID、名称、驱动程序、子网、网关以及连接的容器。

要检查你在上一步中创建的 my-custom-network,请使用以下命令:

docker network inspect my-custom-network

该命令将输出一个详细的 JSON 对象,代表 my-custom-network 的配置。你可以查看这个输出,以了解网络的属性。

输出将包含以下字段:

  • Name:网络的名称(my-custom-network)。
  • Id:网络的唯一 ID。
  • Driver:使用的网络驱动程序(bridge)。
  • Scope:网络的作用域(通常为 local)。
  • IPAM:有关 IP 地址管理的信息,包括子网和网关。
  • Containers:连接到该网络的容器列表(初始为空)。

理解 docker network inspect 的输出对于调试网络问题以及了解容器的连接方式至关重要。

使用 Go 模板检查自定义网络

在这一步中,你将学习如何结合 docker network inspect 命令使用 Go 模板,从网络配置中提取特定信息。当你只需要某些特定细节,而不想解析整个 JSON 输出时,这种方法非常有用。

-f--format 标志允许你指定一个 Go 模板。该模板使用 Go 模板语法来访问 JSON 输出中的字段。

假设你只想查看网络的 ID 和驱动程序。你可以使用以下模板:{{.Id}} {{.Driver}}

执行以下命令来检查 my-custom-network 并使用此模板格式化输出:

docker network inspect -f '{{.Id}} {{.Driver}}' my-custom-network

输出将是网络 ID 后跟驱动程序名称,两者用空格分隔。

你也可以访问嵌套字段。例如,要从 IPAM 配置中获取子网,你可以使用模板 {{.IPAM.Config}}。由于 IPAM.Config 是一个列表,如果有多个配置,你可能需要遍历它或访问特定元素。为简单起见,假设只有一个配置,并访问 Config 列表中第一个元素内的 Subnet 字段:{{(index .IPAM.Config 0).Subnet}}

让我们尝试检查网络并显示网络名称和子网:

docker network inspect -f 'Name: {{.Name}}, Subnet: {{(index .IPAM.Config 0).Subnet}}' my-custom-network

此命令将以更易读的格式输出网络名称及其子网。

使用 Go 模板为自定义 Docker 命令的输出并精确提取你所需的信息提供了强大的方法。

使用详细输出检查自定义网络

在这一步中,你将学习如何通过使用 --verbose-v 标志,在检查 Docker 网络时获取更详细的信息。该标志会提供默认输出中未包含的额外细节,这对于高级调试和了解网络的内部状态很有帮助。

要使用详细输出检查 my-custom-network,请使用以下命令:

docker network inspect -v my-custom-network

输出将类似于默认的 JSON 输出,但会包含额外的字段和细节。具体的额外信息可能会因网络驱动程序和 Docker 版本而异,但通常会包含有关网络配置和状态的更多底层细节。

例如,使用 bridge 驱动程序时,详细输出可能会包含有关主机系统上底层桥接接口的详细信息,包括其 MAC 地址和 IP 地址。它还可能显示有关 IPAM 配置的更详细信息。

虽然默认输出通常足以满足大多数需求,但当你需要深入了解网络配置或排查复杂的网络问题时,详细输出可能会非常有价值。

将此命令的输出与上一步的输出进行比较,以查看详细标志提供的额外信息。

检查多个网络

在这一步中,你将学习如何使用 docker network inspect 命令同时检查多个 Docker 网络。当你需要比较不同网络的配置,或者一次性获取多个网络的信息时,这会非常有用。

要检查多个网络,只需将网络的名称或 ID 作为参数提供给 docker network inspect 命令,并用空格分隔。

让我们来检查你创建的 my-custom-network 和默认的 bridge 网络。

docker network inspect my-custom-network bridge

这个命令将输出 my-custom-networkbridge 网络的 JSON 配置。每个网络的输出将是一个单独的 JSON 对象。

你还可以将检查多个网络与前几步中学到的格式化选项结合使用。例如,使用 Go 模板获取两个网络的名称和驱动程序:

docker network inspect -f 'Name: {{.Name}}, Driver: {{.Driver}}' my-custom-network bridge

这将在单独的行上输出每个指定网络的名称和驱动程序。

在 Docker 环境中管理多个网络时,一次性检查多个网络可以显著简化你的工作流程。

总结

在本次实验中,你学习了如何使用 docker network create 命令创建自定义 Docker 网络,并使用 docker network ls 命令验证其是否创建成功。接着,你探索了 docker network inspect 命令,以查看详细的网络配置。

你练习了使用默认的 JSON 输出检查网络、利用 Go 模板进行自定义输出,以及获取详细信息。最后,你学习了如何同时检查多个网络。