Linux入门教程:Docker命令行参考(31) – docker network ls列出网络,这包括跨集群中多个主


Usage:  docker network ls [OPTIONS]   List networks   Aliases:   ls, list   Options:   -f, --filter value   Provide filter values (i.e. 'dangling=true') (default [])       --help           Print usage       --no-trunc       Do not truncate the output   -q, --quiet          Only display network IDs

列出Engine daemon知道的所有网络。这包括跨集群中多个主机的网络,例如:

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

使用–no-trunc选项显示完整的网络id:

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

过滤

过滤标志(-f或–filter)格式是key=value。如果超过一个过滤,那么传递多个标志(如 –filter “foo=bar” –filter “bif=baz”)。多个过滤标志作为一个OR过滤连接。例如-f type=custom -f type=builtin返回custom和builtin网络。
目前支持的过滤有:

driver id (网络id) label (label= 或 label==) name (网络名称) type (custom builtin)

Driver

driver过滤器基于它们的驱动匹配网络。
下面的示例匹配使用bridge驱动的网络:

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

ID

id过滤器基于完整或部分网络ID匹配网络。
下面的示例是过滤出包含ID 63d1ff1f77b0…字符串的网络。

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

也可以使用ID的部分字符来匹配:

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

Label

label过滤器基于label的存在或label和其值来匹配网络。
下面的示例过滤出有一个usage label而不管它是什么值的所有网络。

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

下面过滤出存在usage label且值为prod的网络。

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

Name

name过滤器基于网络名称的全部或部分匹配网络。
下面示例过滤出网络名称包含foobar字符中的所有网络。

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

也可以指定名称的部分匹配:

$ docker network ls --filter name=foo NETWORK ID          NAME                DRIVER 95e74588f40d        foo                 bridge 06e7eef0a170        foobar              bridge

Type

type过滤器支持两个值;builtin显示预定义的网络(bridge,none,host),costom显示用户定义的网络。
下面示例过滤出所有用户定义的网络:

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

通过这个命令可以清理网络。例如,使用这个过滤可以删除所有的用户定义的网络:

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

当尝试删除仍然有容器连接到的网络时将出现一个waring。

相关内容