docker network lsコマンドの使い方(実例付)

Docker公式ロゴ3b
©2023 Docker Inc. All rights reserved

 本記事は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コマンドの主な使い方

 以下で実例をまじえたコマンドの使い方を解説していきたいと思います。

実例では、Ubuntuの公式イメージにより起動したコンテナ(testvm)を使用します。

コンテナは「docker run -dit --init --name testvm ubuntu」で起動します。

※「--rm」オプションを付けておりませんので、ご利用後はコンテナ削除をお忘れなく。

基本事項の解説

 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

 文字列の検索は部分一致で行われます。

NETWORK IDにidフィルターに指定した文字列が含まれていない列が出力される場合があります。これはデフォルトではNETWORK IDが先頭12文字しか表示されないためです。省略されている部分は、後述の「--no-trunc」オプションを使用することで確認できます。

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のコマンドの一覧(オリジナルな実例付き)」をご参照ください。

 ご訪問ありがとうございました。

コメント