docker network ls コマンドを使ってネットワークを一覧表示しフィルタリングする方法

DockerBeginner
オンラインで実践に進む

はじめに

この実験では、docker network ls コマンドを効果的に使用して Docker ネットワークを一覧表示およびフィルタリングする方法を学びます。まずは利用可能なすべてのネットワークを一覧表示し、次に --no-trunc オプションを使用して完全なネットワーク ID を表示する方法を調べます。

さらに、ドライバー、名前、スコープ、タイプなどのさまざまな基準に基づいてネットワークをフィルタリングする練習を行います。最後に、テンプレートを使用して docker network ls コマンドの出力をカスタマイズ表示する方法を学びます。この実験を通じて、コマンドラインを使用して Docker ネットワークを管理および調査するための必須スキルを身につけることができます。

すべての Docker ネットワークを一覧表示する

このステップでは、システム上で利用可能なすべての Docker ネットワークを一覧表示する方法を学びます。Docker ネットワークは、コンテナ同士や外部と通信するために不可欠です。デフォルトでは、Docker は bridgehostnone の 3 つのネットワークを作成します。

すべての Docker ネットワークを一覧表示するには、docker network ls コマンドを使用します。このコマンドは、ネットワークの ID、名前、ドライバー、スコープを含むネットワークの一覧を提供します。

利用可能なネットワークを確認するために、コマンドを実行してみましょう。

docker network ls

以下のような出力が表示されるはずです。

NETWORK ID     NAME      DRIVER    SCOPE
b432a7b0f123   bridge    bridge    local
f567c8d1e234   host      host      local
a987b6c5d4e3   none      null      local

この出力にはデフォルトのネットワークが表示されています。NETWORK ID はネットワークの一意の識別子です。NAME はネットワークの名前です。DRIVER はネットワークで使用されるネットワークドライバー(例:bridgehostnull)です。SCOPE はネットワークが利用可能な場所(例:local)を示します。

ID を省略せずにネットワークを一覧表示する

前のステップで Docker ネットワークを一覧表示し、NETWORK ID が省略されていることに気づいたでしょう。これは出力を簡潔に保つためのデフォルトの動作です。ただし、他の Docker コマンドで特定のネットワークを参照する場合など、完全なネットワーク ID が必要なこともあります。

完全なネットワーク ID を表示するには、docker network ls コマンドに --no-trunc オプションを使用します。

このコマンドを試して、完全なネットワーク ID を確認してみましょう。

docker network ls --no-trunc

これで出力には完全なネットワーク ID が表示されます。

NETWORK ID                                                       NAME      DRIVER    SCOPE
b432a7b0f1234567890abcdef1234567890abcdef1234567890abcdef12345678 bridge    bridge    local
f567c8d1e234567890abcdef1234567890abcdef1234567890abcdef12345678 host      host      local
a987b6c5d4e3210fedcba9876543210fedcba9876543210fedcba9876543210fed none      null      local

ご覧のとおり、NETWORK ID 列には完全な、省略されていない ID が表示されています。これは、さらなる操作のために完全な ID をコピーして貼り付ける必要がある場合に便利です。

ドライバーでネットワークをフィルタリングする

このステップでは、Docker ネットワークの一覧をドライバーに基づいてフィルタリングする方法を学びます。これは、bridgehost などの特定のドライバーを使用しているネットワークのみを表示したい場合に便利です。

docker network ls コマンドに --filter オプションを使用することで、出力をフィルタリングできます。フィルターの構文は key=value です。ドライバーでフィルタリングするには、キーとして driver を使用します。

bridge ドライバーを使用しているネットワークのみを表示するようにフィルタリングしてみましょう。

docker network ls --filter driver=bridge

これで出力には bridge ドライバーを使用しているネットワークのみが表示されます。

NETWORK ID     NAME      DRIVER    SCOPE
b432a7b0f123   bridge    bridge    local

次に、host ドライバーを使用しているネットワークのみを表示するようにフィルタリングしてみましょう。

docker network ls --filter driver=host

これで出力には host ドライバーを使用しているネットワークのみが表示されます。

NETWORK ID     NAME      DRIVER    SCOPE
f567c8d1e234   host      host      local

このフィルタリング機能を使用することで、基盤となる技術に基づいてネットワークをすばやく見つけることができます。

名前でネットワークをフィルタリングする

このステップでは、Docker ネットワークの一覧を名前に基づいてフィルタリングする方法を学びます。これは、特定の名前のネットワークを探している場合に便利です。

ドライバーでフィルタリングする場合と同様に、docker network ls コマンドに --filter オプションを使用します。名前でフィルタリングするには、キーとして name を使用します。

bridge という名前のネットワークのみを表示するようにフィルタリングしてみましょう。

docker network ls --filter name=bridge

これで出力には bridge という名前のネットワークのみが表示されます。

NETWORK ID     NAME      DRIVER    SCOPE
b432a7b0f123   bridge    bridge    local

次に、host という名前のネットワークのみを表示するようにフィルタリングしてみましょう。

docker network ls --filter name=host

これで出力には host という名前のネットワークのみが表示されます。

NETWORK ID     NAME      DRIVER    SCOPE
f567c8d1e234   host      host      local

このフィルターを使用することで、ネットワークの名前が分かっている場合にすばやくそのネットワークを見つけることができます。

スコープとタイプでネットワークをフィルタリングする

このステップでは、Docker ネットワークの一覧をスコープとタイプに基づいてフィルタリングする方法を学びます。scope はネットワークが利用可能な場所を示し(例:local または swarm)、type はネットワークドライバーを指します。type はしばしば driver と同じですが、type をフィルターキーとして使用することも可能です。

docker network ls コマンドに --filter オプションを使用することで、出力をフィルタリングできます。スコープでフィルタリングするには、キーとして scope を使用します。タイプでフィルタリングするには、キーとして type を使用します。

local スコープのネットワークのみを表示するようにフィルタリングしてみましょう。

docker network ls --filter scope=local

出力には local スコープのすべてのネットワークが表示されます。

NETWORK ID     NAME      DRIVER    SCOPE
b432a7b0f123   bridge    bridge    local
f567c8d1e234   host      host      local
a987b6c5d4e3   none      null      local

次に、bridge タイプのネットワークのみを表示するようにフィルタリングしてみましょう。

docker network ls --filter type=bridge

出力には bridge タイプのネットワーク(この場合、bridge ドライバーと同じ)が表示されます。

NETWORK ID     NAME      DRIVER    SCOPE
b432a7b0f123   bridge    bridge    local

--filter オプションを複数回使用することで、フィルターを組み合わせることができます。たとえば、local スコープで bridge ドライバーのネットワークをフィルタリングするには、次のようにします。

docker network ls --filter scope=local --filter driver=bridge

これは、この特定の環境で type=bridge でフィルタリングした場合と同じ結果になりますが、フィルターを組み合わせる方法を示しています。

テンプレートを使用してネットワーク出力をフォーマットする

このステップでは、Go テンプレートを使用して docker network ls コマンドの出力をフォーマットする方法を学びます。これは強力な機能で、必要な情報のみを特定の形式で表示するように出力をカスタマイズできます。

--format オプションを使用すると、テンプレートを指定できます。このテンプレートは Go の text/template パッケージの構文を使用します。ネットワークオブジェクトの様々なフィールド、例えば .ID.Name.Driver.Scope などにアクセスできます。

出力をフォーマットして、ネットワーク名とドライバーのみをコロンで区切って表示してみましょう。

docker network ls --format "{{.Name}}: {{.Driver}}"

これで出力はテンプレートに従ってフォーマットされます。

bridge: bridge
host: host
none: null

フォーマットされた出力にヘッダーを含めることもできます。

docker network ls --format "Network Name\tDriver\n{{.Name}}\t{{.Driver}}"

これで出力にはヘッダーが含まれます。

Network Name    Driver
bridge          bridge
host            host
none            null

\t はタブスペースを作成し、\n は改行を作成します。このフォーマット機能は、スクリプト作成やレポート生成に非常に便利です。

まとめ

この実験では、docker network ls コマンドを使用して Docker ネットワークを一覧表示する方法を学びました。まず、利用可能なすべてのネットワークを一覧表示し、デフォルトのネットワークとその基本情報(ID、名前、ドライバー、スコープ)を確認しました。次に、--no-trunc オプションを使用して完全なネットワーク ID を表示する方法を調べました。これは特定のネットワークを参照する際に便利です。

さらに、様々な基準に基づいてネットワークリストをフィルタリングする練習を行いました。--filter driver=<driver_name> オプションを使用してドライバーでフィルタリングし、--filter name=<network_name> を使用してネットワーク名でフィルタリングし、--filter scope=<scope>--filter type=<type> を使用してスコープとタイプでフィルタリングする方法を学びました。最後に、--format オプションと Go テンプレートを使用して docker network ls コマンドの出力をフォーマットする方法を発見し、表示する情報をカスタマイズできるようになりました。