本記事はDocker ver24.0.7の環境で確認しています。
このコマンドは、Dockerネットワークの一覧を出力する際に使用します。
出力されるネットワークには、複数のDockerホストにまたがるマルチホストネットワークも含まれます。
dockerネットワークに関しましては、別記事「Dockerネットワークの概要とその作り方の解説」をご参照ください。
docker network lsコマンドのフォーマットとオプション
フォーマット
docker network ls [オプション]
主なオプション一覧
オプション | 概説 |
---|---|
-f, --filter=[] | 出力するネットワークをフィルタリングする |
--no-trunc | ネットワークIDを省略なしで出力する |
-q, --quiet | ネットワークIDのみ出力する |
コマンド例
$ docker network ls
$ docker network ls -f driver=bridge
docker network lsコマンドの主な使い方
以下で実例をまじえたコマンドの使い方を解説していきたいと思います。
基本事項の解説
docker network lsコマンドは、Dockerネットワークの一覧を出力します。
「-f」オプションを使用しますと、出力されるDockerネットワークをかなり細かくフィルタリングすることが可能です。
Dockerのインフラ担当の方は必需品といえるコマンドのひとつですね。
Dockerネットワークの一覧を出力する
docker network lsコマンドは、コマンドを実行したホスト内のDockerデーモンが認識する全てのDockerネットワークの一覧を出力します。
よって、出力されるDockerネットワークには、ローカル内のDockerネットワークはもちろんのこと、他のDockerホストにまたがって作成されているマルチホストネットワークも含まれます。
※マルチネットワークに関しましては、別記事「Dockerのマルチホストネットワークの概要説明と環境構築」をご参照下さい。
Dockerネットワークの一覧を出力するには以下のコマンドを実行します。
$ docker network ls
以下のように、Dockerホスト内に存在するDockerネットワークが出力されます。
NETWORK ID NAME DRIVER SCOPE
3abe6d83703c bridge bridge local
8a9d400abb35 host host local
9b510d65ac45 none null local
3つのネットワークが出力されています。ちなみに、この3つはDockerインストール時に自動生成されるネットワークです。
環境によっては、上記以外にも、インストール後に作成したネットワークが出力されているかもしれません。
出力されている内容は以下のとおりです。
- NETWORK ID
個々のネットワークに付与されるIDです。実際のIDはもっと長いのですが、IDの先頭12文字が表示されています。 - NAME
ネットワークに付けられた名前です。 - DRIVER
ネットワークが使用しているドライバです。bridge、host、null、overlayなどがあります。 - SCOPE
ネットワークの有効範囲です。localは文字通りローカルです。「docker network ls」コマンドを実行したDockerホスト内が有効範囲になります。他にはglobalやswarmがありまして、overlayドライバを使用したマルチホストネットワークの場合に表示されます。
Dockerネットワークの一覧をフィルタリングする
ネットワークの数が多くなってきますと、出力をフィルタリングしたくなると思います。
docker network lsコマンドは、以下のフィルターをサポートしています。
- driver
- id
- name
- type
- label
「-f」オプションの後に<フィルター名>=<キーワード>の形式で指定します。
以下は各フィルターについての説明です。
driver
ネットワークのドライバ名を指定してフィルターすることができます。
以下は、bridgeドライバを指定した例です。
$ docker network ls -f driver=bridge
Dockerホスト内に存在するネットワークの内、bridgeドライバを使用しているもののみ出力されます。
NETWORK ID NAME DRIVER SCOPE
3abe6d83703c bridge bridge local
id
指定したキーワードが含まれているネットワークIDが付与されているネットワークが出力されます。
まずは全量出力します。
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
3abe6d83703c bridge bridge local
8a9d400abb35 host host local
9b510d65ac45 none null local
次にidフィルターに文字列「abb」を指定してみます。
$ docker network ls -f id=abb
以下が出力されました。NETWORK IDに文字列「abb」が含まれているネットワークのみ出力されています。
NETWORK ID NAME DRIVER SCOPE
8a9d400abb35 host host local
文字列の検索は部分一致で行われます。
name
指定したキーワードが含まれているネットワーク名が付与されているネットワークが出力されます。
nameフィルターに文字列「st」を指定してみます。
$ docker network ls -f name=st
以下が出力されました。NAMEに文字列「st」が含まれているネットワークのみ出力されています。
NETWORK ID NAME DRIVER SCOPE
8a9d400abb35 host host local
ネットワークIDと同様に、検索は部分一致で行われます。
type
ネットワークのtype別に出力をフィルターします。
typeには、「builtin」と「custom」が指定可能です。
builtinを指定すると、Dockerインストール時に自動作成されたネットワークのみ出力されます。customの場合は、docker network createコマンドで追加したネットワークを出力します。
以下のコマンドで、1つDockerネットワークを作成してみましょう。
$ docker network create -d bridge --label version=1.2 testnet1
確認してみます。
$ docker network ls
一番下に、今作成したネットワークtestnet1が追加されていますね。
NETWORK ID NAME DRIVER SCOPE
3abe6d83703c bridge bridge local
8a9d400abb35 host host local
9b510d65ac45 none null local
7ae0bc7958e6 testnet1 bridge local
この状態で、typeフィルターにbuiltinを指定して実行してみます。
$ docker network ls -f type=builtin
先ほど作成したネットワークtestnet1が出力されていません。
NETWORK ID NAME DRIVER SCOPE
3abe6d83703c bridge bridge local
8a9d400abb35 host host local
9b510d65ac45 none null local
次にcustomを指定して実行してみます。
$ docker network ls -f type=custom
今度は、さきほど作成したtestnet1のみが出力されました。
NETWORK ID NAME DRIVER SCOPE
7ae0bc7958e6 testnet1 bridge local
label
Dockerネットワークには、個々にラベルを付与することが可能です。
例えば、「version」や「admin」など、自由にラベルを付けられます。更に、そのラベルに値を設定することも可能です。
labelフィルターは、このようなネットワークに設定されたラベル情報でフィルターする場合に使用します。
前項で作成したネットワークには、実はラベルを設定していました。前に戻って頂くとわかると思います。
「version=1.2」という、versionというラベルに1.2という値を付けています。
では、以下のコマンドでlabelフィルターを試してみましょう。
$ docker network ls -f label=version
versionというラベルが設定されているネットワークであるtestnet1が出力されました。
NETWORK ID NAME DRIVER SCOPE
70c09bb0318d testnet1 bridge local
今度は、値も指定してみます。
$ docker network ls -f label=version=1.2
同じようにネットワークtestnet1が出力されました。
NETWORK ID NAME DRIVER SCOPE
70c09bb0318d testnet1 bridge local
ネットワークIDを省略なしで出力する
デフォルトでは、ネットワークIDは先頭の12文字が出力されます。
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
3abe6d83703c bridge bridge local
8a9d400abb35 host host local
9b510d65ac45 none null local
70c09bb0318d testnet1 bridge local
「--no-trunc」オプションを指定すると、ネットワークIDを省略なしで出力します。
$ docker network ls --no-trunc
出力内容は以下のとおりです。
NETWORK ID NAME DRIVER SCOPE
3abe6d83703cb84bb47c785dfd2f5f15b2aac60bbb9fb25a7d5b30ee4a7a619b bridge bridge local
8a9d400abb35cc36264b591420759760d3dc692406562062f5051b1fdcfb1629 host host local
9b510d65ac45c864f1f3e4a8f2c1627af3a937bac4d655a6c616aade52d0ba3e none null local
70c09bb0318dc466b80721e58ccb0d28272801d5c90c491a1a0bfbcb1aeaa643 testnet1 bridge local
ネットワークIDのみ出力する
「-q」もしくは「--quiet」オプションを指定すると、ネットワークIDのみの出力になります。
$ docker network ls -q
出力内容は以下のとおりです。
3abe6d83703c
8a9d400abb35
9b510d65ac45
70c09bb0318d
シェルスクリプトなどでネットワーク一覧を使用した処理を行う場合などに便利ですね。
ちなみに「--no-trunc」も付けると以下のような出力内容になります。
$ docker network ls -q --no-trunc
3abe6d83703cb84bb47c785dfd2f5f15b2aac60bbb9fb25a7d5b30ee4a7a619b
8a9d400abb35cc36264b591420759760d3dc692406562062f5051b1fdcfb1629
9b510d65ac45c864f1f3e4a8f2c1627af3a937bac4d655a6c616aade52d0ba3e
70c09bb0318dc466b80721e58ccb0d28272801d5c90c491a1a0bfbcb1aeaa643
完全にユニークなIDを取得する場合は、「--no-trunc」も付けた方がよろしいかと思います。
おわりに
以上でdocker network lsコマンドの紹介を終わります。
ご指摘、ご要望などが御座いましたらコメントいただけるとうれしいです。
他のDockerコマンドの実例付紹介記事は、本サイト内の別記事「Dockerのコマンドの一覧(オリジナルな実例付き)」をご参照ください。
ご訪問ありがとうございました。
コメント