Docker CLI docker network ls 常用命令

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍Docker CLI 中 docker network ls 常用命令。

1、docker network ls 简介

docker network ls 是Docker命令行工具中的一个命令,用于列出所有的网络。

参考文档:https://docs.docker.com/engine/reference/commandline/network_ls/

2、docker network ls 语法

docker network ls [OPTIONS]

3、docker network ls 命令

1)列出所有网络

docker network ls
NETWORK ID          NAME                DRIVER          SCOPE
7fca4eb8c647        bridge              bridge          local
9f904ee27bf5        none                null            local
cf03ee007fb4        host                host            local
78b03ee04fc4        multi-host          overlay         swarm

使用--no-trunc选项可显示完整的网络ID:

docker network ls --no-trunc
NETWORK ID                                                         NAME                DRIVER           SCOPE
18a2866682b85619a026c81b98a5e375bd33e1b0936a26cc497c283d27bae9b3   none                null             local
c288470c46f6c8949c5f7e5099b5b7947b07eabe8d9a27d79a9cbf111adcbf47   host                host             local
7b369448dccbf865d397c8d2be0cda7cf7edc6b0945f77d2529912ae917a0185   bridge              bridge           local
95e74588f40db048e86320c6526440c504650a1ff3e9f7d60a497c4d2163e5bd   foo                 bridge           local
63d1ff1f77b07ca51070a8c227e962238358bd310bde1529cf62e6c307ade161   dev                 bridge           local

2)筛选(--filter)

筛选标志(-f--filter)的格式是键=值对。如果有多个筛选条件,则需要传递多个标志(例如,--filter "foo=bar" --filter "bif=baz")。多个筛选标志会组合成OR筛选条件。例如,-f type=custom -f type=builtin可以返回自定义和内置网络。

目前支持的筛选条件有:

  • driverid(网络ID)
  • label(label=或label==)
  • name(网络名称)
  • scope(swarm|global|local)
  • type(custom|builtin)

3)Driver

驱动程序筛选器根据网络的驱动程序进行匹配。

以下示例将匹配带有bridge驱动程序的网络:

docker network ls --filter driver=bridge
NETWORK ID          NAME                DRIVER            SCOPE
db9db329f835        test1               bridge            local
f6e212da9dfd        test2               bridge            local

4)ID

id筛选器匹配一部分或全部网络ID。

以下示例将匹配所有ID包含字符串63d1ff1f77b0...的网络。

docker network ls --filter id=63d1ff1f77b07ca51070a8c227e962238358bd310bde1529cf62e6c307ade161
NETWORK ID          NAME                DRIVER           SCOPE
63d1ff1f77b0        dev                 bridge           local

也可以按子字符串过滤ID,如下所示:

docker network ls --filter id=95e74588f40d
NETWORK ID          NAME                DRIVER          SCOPE
95e74588f40d        foo                 bridge          local
docker network ls --filter id=95e
NETWORK ID          NAME                DRIVER          SCOPE
95e74588f40d        foo                 bridge          local

5)Label

标签筛选器仅基于标签或标签和值匹配网络。

以下示例将匹配具有usage标签的所有网络,无论其值如何:

docker network ls -f "label=usage"
NETWORK ID          NAME                DRIVER         SCOPE
db9db329f835        test1               bridge         local
f6e212da9dfd        test2               bridge         local

以下示例将匹配具有prod值的usage标签的所有网络:

docker network ls -f "label=usage=prod"
NETWORK ID          NAME                DRIVER        SCOPE
f6e212da9dfd        test2               bridge        local

6)Name

名称筛选器匹配一部分或全部网络名称。

以下示例将匹配所有名称包含字符串foobar的网络。

docker network ls --filter name=foobar
NETWORK ID          NAME                DRIVER       SCOPE
06e7eef0a170        foobar              bridge       local

也可以按名称中的子字符串过滤,如下所示:

docker network ls -f "label=usage=prod"
NETWORK ID          NAME                DRIVER        SCOPE
f6e212da9dfd        test2               bridge        local

7)Scope

范围筛选器根据其范围匹配网络。

以下示例将匹配具有swarm范围的所有网络:

docker network ls --filter scope=swarm
NETWORK ID          NAME                DRIVER              SCOPE
xbtm0v4f1lfh        ingress             overlay             swarm
ic6r88twuu92        swarmnet            overlay             swarm

以下示例将匹配具有本地范围的所有网络:

docker network ls --filter scope=local
NETWORK ID          NAME                DRIVER              SCOPE
e85227439ac7        bridge              bridge              local
0ca0e19443ed        host                host                local
ca13cc149a36        localnet            bridge              local
f9e115d2de35        none                null                local

8)Type

类型筛选器支持两个值;builtin显示预定义网络(bridgenonehost),而custom显示用户定义的网络。

以下示例将匹配所有用户定义的网络:

docker network ls --filter type=custom
NETWORK ID          NAME                DRIVER       SCOPE
95e74588f40d        foo                 bridge       local
63d1ff1f77b0        dev                 bridge       local

通过使用此标志,可以进行批量清理。例如,使用此筛选器删除所有用户定义的网络:

docker network rm `docker network ls --filter type=custom -q`

尝试删除与容器相关联的网络时,会发出警告。

9)格式化输出(--format)

使用Go模板,格式选项(--format)可对网络输出进行漂亮的打印。

下面列出了Go模板的有效占位符:

占位符

描述

.ID

网络ID

.Name

网络名称

.Driver

网络驱动程序

.Scope

网络范围(local,global)

.IPv6

是否在网络上启用IPv6。

.Internal

网络是否为内部网络。

.Labels

分配给网络的所有标签

.Label

此网络特定标签的值。例如{{.Label "project.version"}}

.CreatedAt

网络创建时间

当使用--format选项时,network ls命令会按照模板声明的方式输出数据,或者在使用table指令时,也会包含列标题。

以下示例使用一个没有标题的模板,将所有网络的ID和Driver条目用冒号(:)分隔开进行输出:

docker network ls --format "{{.ID}}: {{.Driver}}"
afaaab448eb2: bridge
d1584f8dc718: host
391df270dc66: null

要以JSON格式列出所有网络,请使用json指令:

docker network ls --format json
{"CreatedAt":"2021-03-09 21:41:29.798999529 +0000 UTC","Driver":"bridge","ID":"f33ba176dd8e","IPv6":"false","Internal":"false","Labels":"","Name":"bridge","Scope":"local"}
{"CreatedAt":"2021-03-09 21:41:29.772806592 +0000 UTC","Driver":"host","ID":"caf47bb3ac70","IPv6":"false","Internal":"false","Labels":"","Name":"host","Scope":"local"}
{"CreatedAt":"2021-03-09 21:41:29.752212603 +0000 UTC","Driver":"null","ID":"9d096c122066","IPv6":"false","Internal":"false","Labels":"","Name":"none","Scope":"local"}

4、命令选项

选项

默认值

描述

--filter 或 -f

提供筛选条件,例如:driver=bridge

--format

table

使用自定义模板格式化输出:

‘table’:以表格格式打印输出,

并显示列头(默认)

‘table TEMPLATE’:

使用给定的Go模板以表格格式打印输出

‘json’:以JSON格式打印输出 

‘TEMPLATE’:使用给定的Go模板打印输出。

有关使用模板格式化输出的更多信息,请参见

https://docs.docker.com/go/formatting/

--no-trunc

不截断输出

--quiet 或 -q

仅显示网络ID

5、子命令

命令

描述

docker network connect

将容器连接到网络

docker network create

创建一个网络

docker network disconnect

断开容器与网络之间的连接

docker network inspect

显示一个或多个网络的详细信息

docker network ls

列出所有网络

docker network prune

删除所有未使用的网络

docker network rm

删除一个或多个网络

推荐阅读
cjavapy编程之路首页