简介
在这个实验中,你将学习如何使用 docker network inspect
命令查看 Docker 网络的详细信息。你将从创建一个自定义的 Docker 网络开始操作。
创建网络后,你将探索不同的方式来检查其配置。这包括使用默认的 JSON 输出、应用 Go 模板进行自定义输出,以及使用详细选项获取更全面的详细信息。最后,你将学习如何同时检查多个网络。
在这个实验中,你将学习如何使用 docker network inspect
命令查看 Docker 网络的详细信息。你将从创建一个自定义的 Docker 网络开始操作。
创建网络后,你将探索不同的方式来检查其配置。这包括使用默认的 JSON 输出、应用 Go 模板进行自定义输出,以及使用详细选项获取更全面的详细信息。最后,你将学习如何同时检查多个网络。
在这一步中,你将学习如何在 Docker 中创建自定义网络。默认情况下,Docker 提供了几种网络驱动程序,但创建自定义网络可以让你隔离容器并控制它们之间的通信方式。
在创建网络之前,让我们使用 docker network ls
命令检查系统上现有的网络。
docker network ls
你应该会看到一些默认网络,如 bridge
、host
和 none
。
现在,让我们使用 bridge
驱动程序创建一个名为 my-custom-network
的新自定义网络。bridge
驱动程序是默认的网络驱动程序,适用于大多数用例。
docker network create my-custom-network
执行该命令后,Docker 将创建网络并打印其 ID。
为了验证网络是否已成功创建,请再次运行 docker network ls
命令。
docker network ls
你现在应该会看到 my-custom-network
列在可用网络中。
在这一步中,你将学习如何使用 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
的输出对于调试网络问题以及了解容器的连接方式至关重要。
在这一步中,你将学习如何结合 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-network
和 bridge
网络的 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 模板进行自定义输出,以及获取详细信息。最后,你学习了如何同时检查多个网络。