はじめに
この実験では、docker network ls コマンドを効果的に使用して Docker ネットワークを一覧表示およびフィルタリングする方法を学びます。まずは利用可能なすべてのネットワークを一覧表示し、次に --no-trunc オプションを使用して完全なネットワーク ID を表示する方法を調べます。
さらに、ドライバー、名前、スコープ、タイプなどのさまざまな基準に基づいてネットワークをフィルタリングする練習を行います。最後に、テンプレートを使用して docker network ls コマンドの出力をカスタマイズ表示する方法を学びます。この実験を通じて、コマンドラインを使用して Docker ネットワークを管理および調査するための必須スキルを身につけることができます。
すべての Docker ネットワークを一覧表示する
このステップでは、システム上で利用可能なすべての Docker ネットワークを一覧表示する方法を学びます。Docker ネットワークは、コンテナ同士や外部と通信するために不可欠です。デフォルトでは、Docker は bridge、host、none の 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 はネットワークで使用されるネットワークドライバー(例:bridge、host、null)です。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 ネットワークの一覧をドライバーに基づいてフィルタリングする方法を学びます。これは、bridge や host などの特定のドライバーを使用しているネットワークのみを表示したい場合に便利です。
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 コマンドの出力をフォーマットする方法を発見し、表示する情報をカスタマイズできるようになりました。



