如何使用 docker network ls 命令列出和过滤网络

DockerDockerBeginner
立即练习

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

简介

在这个实验中,你将学习如何有效地使用 docker network ls 命令来列出和过滤 Docker 网络。你将从列出所有可用网络开始,然后探索如何使用 --no-trunc 选项显示完整的网络 ID。

此外,你将练习根据各种条件(如驱动程序、名称、范围和类型)过滤网络。最后,你将学习如何使用模板格式化 docker network ls 命令的输出,以实现自定义显示。这个实验将让你掌握使用命令行管理和检查 Docker 网络的必要技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/ls -.-> lab-555177{{"如何使用 docker network ls 命令列出和过滤网络"}} docker/network -.-> lab-555177{{"如何使用 docker network ls 命令列出和过滤网络"}} end

列出所有 Docker 网络

在这一步中,你将学习如何列出系统上所有可用的 Docker 网络。Docker 网络对于容器之间以及容器与外部世界的通信至关重要。默认情况下,Docker 会创建三个网络:bridgehostnone

要列出所有 Docker 网络,你可以使用 docker network ls 命令。该命令会提供一个网络列表,包括网络的 ID、名称、驱动程序和范围。

让我们执行该命令来查看可用的网络。

docker network ls

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

NETWORK ID     NAME      DRIVER    SCOPE
b432a7b0f123   bridge    bridge    local
f567c8d1e234   host      host      local
a987b6c5d4e3   none      null      local

输出显示了默认网络。NETWORK ID 是网络的唯一标识符。NAME 是网络的名称。DRIVER 是网络使用的网络驱动程序(例如,bridgehostnull)。SCOPE 表示网络的可用范围(例如,local)。

列出网络并显示完整 ID

在上一步中,你列出了 Docker 网络,并且注意到 NETWORK ID 被截断了。这是为了使输出简洁而采用的默认行为。然而,有时你需要完整的网络 ID,例如在其他 Docker 命令中引用特定网络时。

要显示完整的网络 ID,你可以在 docker network ls 命令中使用 --no-trunc 选项。

让我们尝试执行这个命令来查看完整的网络 ID。

docker network ls --no-trunc

现在输出将显示完整的网络 ID:

NETWORK ID                                                       NAME      DRIVER    SCOPE
b432a7b0f1234567890abcdef1234567890abcdef1234567890abcdef12345678 bridge    bridge    local
f567c8d1e234567890abcdef1234567890abcdef1234567890abcdef12345678 host      host      local
a987b6c5d4e3210fedcba9876543210fedcba9876543210fedcba9876543210fed none      null      local

如你所见,NETWORK ID 列现在显示的是完整、未截断的 ID。当你需要复制并粘贴完整的 ID 以进行进一步操作时,这非常有用。

按驱动程序过滤网络

在这一步中,你将学习如何根据驱动程序对 Docker 网络列表进行过滤。当你只想查看使用特定驱动程序(如 bridgehost)的网络时,这非常有用。

你可以在 docker network ls 命令中使用 --filter 选项来过滤输出。过滤语法为 key=value。要按驱动程序进行过滤,你可以使用键 driver

让我们过滤网络,只显示使用 bridge 驱动程序的网络。

docker network ls --filter driver=bridge

现在输出将只显示使用 bridge 驱动程序的网络:

NETWORK ID     NAME      DRIVER    SCOPE
b432a7b0f123   bridge    bridge    local

现在,让我们过滤网络,只显示使用 host 驱动程序的网络。

docker network ls --filter driver=host

现在输出将只显示使用 host 驱动程序的网络:

NETWORK ID     NAME      DRIVER    SCOPE
f567c8d1e234   host      host      local

你可以利用这种过滤功能,根据网络的底层技术快速查找网络。

按名称过滤网络

在这一步中,你将学习如何根据名称对 Docker 网络列表进行过滤。当你想通过名称查找特定网络时,这很有用。

与按驱动程序过滤类似,你可以在 docker network ls 命令中使用 --filter 选项。要按名称过滤,你使用键 name

让我们过滤网络,只显示名为 bridge 的网络。

docker network ls --filter name=bridge

现在输出将只显示名为 bridge 的网络:

NETWORK ID     NAME      DRIVER    SCOPE
b432a7b0f123   bridge    bridge    local

现在,让我们过滤网络,只显示名为 host 的网络。

docker network ls --filter name=host

现在输出将只显示名为 host 的网络:

NETWORK ID     NAME      DRIVER    SCOPE
f567c8d1e234   host      host      local

当你知道网络名称时,可以使用此过滤器快速定位网络。

按作用域和类型过滤网络

在这一步中,你将学习如何根据 Docker 网络的作用域(scope)和类型对网络列表进行过滤。scope 表示网络的可用范围(例如 localswarm),而 type 则指的是网络驱动程序。虽然 type 通常与 driver 相同,但也可以使用 type 作为过滤键。

你可以在 docker network ls 命令中使用 --filter 选项来过滤输出。要按作用域过滤,你使用键 scope;要按类型过滤,你使用键 type

让我们过滤网络,只显示作用域为 local 的网络。

docker network ls --filter scope=local

输出将显示所有作用域为 local 的网络:

NETWORK ID     NAME      DRIVER    SCOPE
b432a7b0f123   bridge    bridge    local
f567c8d1e234   host      host      local
a987b6c5d4e3   none      null      local

现在,让我们过滤网络,只显示类型为 bridge 的网络。

docker network ls --filter type=bridge

输出将显示类型为 bridge 的网络(在这种情况下,与 bridge 驱动程序相同):

NETWORK ID     NAME      DRIVER    SCOPE
b432a7b0f123   bridge    bridge    local

你可以通过多次使用 --filter 选项来组合过滤器。例如,要过滤出作用域为 local 且驱动程序为 bridge 的网络:

docker network ls --filter scope=local --filter driver=bridge

在这个特定环境中,这将得到与按 type=bridge 过滤相同的结果,但它展示了如何组合过滤器。

使用模板格式化网络输出

在这一步中,你将学习如何使用 Go 模板来格式化 docker network ls 命令的输出。这是一个强大的功能,它允许你自定义输出,只显示你需要的信息,并以特定的格式呈现。

--format 选项允许你指定一个模板。该模板使用 Go 的 text/template 包语法。你可以访问网络对象的各个字段,例如 .ID.Name.Driver.Scope

让我们将输出格式化为只显示网络名称和驱动程序,并用冒号分隔。

docker network ls --format "{{.Name}}: {{.Driver}}"

现在输出将根据模板进行格式化:

bridge: bridge
host: host
none: null

你还可以在格式化的输出中包含标题。

docker network ls --format "Network Name\tDriver\n{{.Name}}\t{{.Driver}}"

现在输出将包含标题:

Network Name    Driver
bridge          bridge
host            host
none            null

\t 用于创建一个制表符空格,\n 用于创建一个新行。这种格式化功能对于脚本编写和生成报告非常有用。

总结

在本次实验中,你学习了如何使用 docker network ls 命令来列出 Docker 网络。你首先列出了所有可用的网络,查看了默认网络及其基本信息(ID、名称、驱动程序、作用域)。接着,你探索了如何使用 --no-trunc 选项来显示完整的网络 ID,这在引用特定网络时非常有用。

此外,你还练习了根据各种条件过滤网络列表。你学会了使用 --filter driver=<driver_name> 选项按驱动程序过滤,使用 --filter name=<network_name> 选项按网络名称过滤,以及使用 --filter scope=<scope>--filter type=<type> 选项按作用域和类型过滤。最后,你了解了如何使用 --format 选项和 Go 模板来格式化 docker network ls 命令的输出,从而自定义显示的信息。