はじめに
この実験では、docker network inspect コマンドを使用して Docker ネットワークの詳細情報を表示する方法を学習します。まず、作業用のカスタム Docker ネットワークを作成します。
ネットワークを作成した後、その設定を調査するさまざまな方法を探索します。これには、デフォルトの JSON 出力を使用する方法、カスタム出力用に Go テンプレートを適用する方法、およびより詳細な情報を取得するための詳細オプションを利用する方法が含まれます。最後に、複数のネットワークを同時に調査する方法を学習します。
カスタム Docker ネットワークを作成する
このステップでは、Docker でカスタムネットワークを作成する方法を学びます。デフォルトでは、Docker はいくつかのネットワークドライバーを提供していますが、カスタムネットワークを作成することで、コンテナを分離し、コンテナ間の通信方法を制御することができます。
ネットワークを作成する前に、docker network ls コマンドを使用してシステム上の既存のネットワークを確認しましょう。
docker network ls
bridge、host、none などのいくつかのデフォルトネットワークが表示されるはずです。
では、bridge ドライバーを使用して my-custom-network という名前の新しいカスタムネットワークを作成しましょう。bridge ドライバーはデフォルトのネットワークドライバーであり、ほとんどのユースケースに適しています。
docker network create my-custom-network
コマンドを実行すると、Docker はネットワークを作成し、その ID を表示します。
ネットワークが正常に作成されたことを確認するには、再度 docker network ls コマンドを実行します。
docker network ls
これで、利用可能なネットワークの一覧に my-custom-network が表示されるはずです。
デフォルトの JSON 形式でカスタムネットワークを調査する
このステップでは、docker network inspect コマンドを使用して Docker ネットワークの詳細を調査する方法を学びます。デフォルトでは、このコマンドはネットワーク設定を JSON 形式で出力します。この形式では、ネットワークの ID、名前、ドライバー、サブネット、ゲートウェイ、接続されているコンテナなど、ネットワークに関する包括的な情報が提供されます。
前のステップで作成した my-custom-network を調査するには、次のコマンドを使用します。
docker network inspect my-custom-network
このコマンドは、my-custom-network の設定を表す詳細な JSON オブジェクトを出力します。この出力を調べることで、ネットワークのプロパティを理解することができます。
出力には以下のようなフィールドが含まれます。
Name: ネットワークの名前 (my-custom-network)。Id: ネットワークの一意の ID。Driver: 使用されているネットワークドライバー (bridge)。Scope: ネットワークのスコープ (通常はlocal)。IPAM: IP アドレス管理に関する情報。サブネットやゲートウェイが含まれます。Containers: このネットワークに接続されているコンテナのリスト (最初は空)。
docker network inspect の出力を理解することは、ネットワークの問題をデバッグし、コンテナの接続状況を把握するために重要です。
Go テンプレートを使用してカスタムネットワークを調査する
このステップでは、docker network inspect コマンドと一緒に Go テンプレートを使用して、ネットワーク設定から特定の情報を抽出する方法を学びます。必要なのが特定の詳細だけで、JSON 出力全体を解析したくない場合に便利です。
-f または --format フラグを使用すると、Go テンプレートを指定できます。テンプレートは Go テンプレート構文を使用して、JSON 出力内のフィールドにアクセスします。
ネットワークの ID とドライバーだけを表示したいとしましょう。次のテンプレートを使用できます:{{.Id}} {{.Driver}}。
次のコマンドを実行して、my-custom-network を調査し、このテンプレートを使用して出力を整形します。
docker network inspect -f '{{.Id}} {{.Driver}}' my-custom-network
出力は、ネットワーク ID の後にドライバー名が続き、スペースで区切られます。
ネストされたフィールドにもアクセスできます。たとえば、IPAM 設定からサブネットを取得するには、テンプレート {{.IPAM.Config}} を使用できます。IPAM.Config はリストなので、複数の設定がある場合は、それを反復処理するか、特定の要素にアクセスする必要があるかもしれません。簡単にするために、設定が 1 つだけであると仮定し、Config リストの最初の要素内の Subnet フィールドにアクセスしましょう:{{(index .IPAM.Config 0).Subnet}}。
ネットワークを調査し、ネットワーク名とサブネットを表示してみましょう。
docker network inspect -f 'Name: {{.Name}}, Subnet: {{(index .IPAM.Config 0).Subnet}}' my-custom-network
このコマンドは、ネットワーク名とそのサブネットをより読みやすい形式で出力します。
Go テンプレートを使用することで、Docker コマンドの出力をカスタマイズし、必要な情報を正確に抽出する強力な方法が提供されます。
詳細出力でカスタムネットワークを調査する
このステップでは、--verbose または -v フラグを使用して Docker ネットワークを調査する際に、より詳細な情報を取得する方法を学びます。このフラグは、デフォルトの出力に含まれない追加の詳細情報を提供し、高度なデバッグやネットワークの内部状態の理解に役立ちます。
詳細出力で my-custom-network を調査するには、次のコマンドを使用します。
docker network inspect -v my-custom-network
出力はデフォルトの JSON 出力に似ていますが、追加のフィールドと詳細が含まれます。正確な追加情報は、ネットワークドライバーと Docker のバージョンによって異なりますが、多くの場合、ネットワークの設定と状態に関するより低レベルの詳細が含まれます。
たとえば、bridge ドライバーを使用する場合、詳細出力にはホストシステム上の基盤となるブリッジインターフェイスに関する詳細(MAC アドレスや IP アドレスなど)が含まれることがあります。また、IPAM 設定に関するより詳細な情報も表示されることがあります。
デフォルトの出力はほとんどの目的には通常十分ですが、ネットワークの設定をより深く調べたり、複雑なネットワーキングの問題をトラブルシューティングしたりする場合には、詳細出力は非常に貴重です。
このコマンドの出力を前のステップの出力と比較して、詳細フラグによって提供される追加情報を確認してください。
複数のネットワークを調査する
このステップでは、docker network inspect コマンドを使用して複数の Docker ネットワークを同時に調査する方法を学びます。異なるネットワークの設定を比較したり、一度に複数のネットワークに関する情報を取得したりする場合に便利です。
複数のネットワークを調査するには、docker network inspect コマンドの引数として、ネットワークの名前または ID をスペースで区切って指定します。
作成した my-custom-network とデフォルトの bridge ネットワークを調査してみましょう。
docker network inspect my-custom-network bridge
このコマンドは、my-custom-network と bridge ネットワークの両方の JSON 設定を出力します。各ネットワークの出力は別々の JSON オブジェクトになります。
また、前のステップで学んだ書式設定オプションを複数のネットワークの調査と組み合わせることもできます。たとえば、Go テンプレートを使用して両方のネットワークの名前とドライバーを取得するには、次のようにします。
docker network inspect -f 'Name: {{.Name}}, Driver: {{.Driver}}' my-custom-network bridge
これにより、指定された各ネットワークの名前とドライバーが別々の行に出力されます。
一度に複数のネットワークを調査することで、Docker 環境で複数のネットワークを管理する際の作業フローを大幅に効率化できます。
まとめ
この実験では、docker network create コマンドを使用してカスタム Docker ネットワークを作成し、docker network ls でその作成を確認する方法を学びました。その後、docker network inspect コマンドを使ってネットワークの詳細設定を確認しました。
デフォルトの JSON 出力を使ってネットワークを調査し、Go テンプレートを利用してカスタマイズされた出力を得、詳細な情報を取得する練習を行いました。最後に、複数のネットワークを同時に調査する方法を学びました。



