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


 docker network lsコマンドの使い方の紹介ページです。Docker CE ver17.12.1に対応しております。

 このコマンドは、Dockerネットワークの一覧を出力する際に使用します。

 出力されるネットワークには、複数のDockerホストにまたがるマルチホストネットワークも含まれます。

 dockerネットワークに関しましては、別記事「Dockerネットワークの概要とその作り方の解説」をご参照ください。

 それでは、以下で詳細に解説いたします。

 

docker network lsコマンドのフォーマットとオプション

フォーマット

docker network ls [オプション]

 

主なオプション一覧

-f, --filter=[]
出力するネットワークをフィルタリングする

--no-trunc
ネットワークIDを省略なしで出力する

-q, --quiet
ネットワークIDのみ出力する

■ 本記事の目次に戻る ■

docker network lsコマンドの主な使い方

 

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」など、自由にラベルを付けられます。更に、そのラベルに値を設定することも可能です。

version: 1.2
admin: tarou

 上のようなラベル名と値を各ネットワークに設定することが可能です。

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

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


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください