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 コマンドの出力をカスタマイズし、必要な情報を正確に抽出する強力な方法が提供されます。