docker network ls

說明列出網路
用法docker network ls [選項]
別名
docker network list

說明

列出引擎常駐程式 (daemon) 知道的全部網路。這包括叢集中跨越多個主機的網路。

選項

選項預設值說明
-f, --filter(過濾)提供過濾值(例如 driver=bridge
--format(格式)使用自訂範本設定輸出格式
'table':以表格格式列印輸出,包含欄位標題(預設)
'table 範本':使用指定的 Go 範本以表格格式列印輸出
'json':以 JSON 格式列印
'範本':使用指定的 Go 範本列印輸出。
參考 https://docker-docs.dev.org.tw/go/formatting/--no-trunc(不截斷)
不截斷輸出
-q, --quiet(靜默)僅顯示網路 ID

範例

列出所有網路

$ 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

過濾 (--filter)

過濾旗標 (-f--filter) 的格式為 key=value 鍵值對。如果有多個過濾條件,請傳遞多個旗標(例如 --filter "foo=bar" --filter "bif=baz")。多個過濾旗標會組合成一個 OR 篩選器。例如,-f type=custom -f type=builtin 會傳回 custombuiltin 網路。

目前支援的過濾器為

  • driver(驅動程式)
  • id(網路的 ID)
  • label(標籤)(label=<key>label=<key>=<value>
  • name(網路的名稱)
  • scope(範圍)(swarm|global|local
  • type(類型)(custom|builtin

驅動程式

driver 過濾器會根據網路的驅動程式進行比對。

以下範例會比對使用 bridge 驅動程式的網路

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

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

標籤

label 過濾器會根據是否存在 labellabel 和值來比對網路。

以下過濾器會比對具有 usage 標籤的網路,不論其值為何。

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

以下過濾器會比對具有 usage 標籤且值為 prod 的網路。

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

名稱

name 過濾器會比對網路名稱的全部或部分。

以下過濾器會比對名稱包含 foobar 字串的所有網路。

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

您也可以過濾名稱中的子字串,如下所示

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

範圍

scope 過濾器會根據網路的範圍進行比對。

以下範例會比對範圍為 swarm 的網路

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

以下範例會比對具有 local 範圍的網路

$ 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

類型

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`

嘗試移除已附加容器的網路時,會發出警告。

格式化輸出 (--format)

格式化選項 (--format) 使用 Go 範本來漂亮地印出網路輸出。

Go 範本的有效佔位符號如下所示

佔位符號說明
.ID網路 ID
.Name網路名稱
.Driver網路驅動程式
.Scope網路範圍(本地、全域)
.IPv6網路上是否啟用 IPv6。
.Internal網路是否為內部網路。
.Labels指派給網路的所有標籤。
.Label此網路特定標籤的值。例如 {{.Label "project.version"}}
.CreatedAt網路建立時間

使用 --format 選項時,network ls 命令會完全按照範本宣告的方式輸出資料,或者在使用 table 指令時,也會包含欄位標題。

以下範例使用不含標題的範本,並以冒號 (:) 分隔所有網路的 IDDriver 項目輸出

$ 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"}