docker desktop module ls コマンドでモジュールを一覧表示する方法

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

はじめに

この実験では、docker versionコマンドを使用して Docker Desktop モジュールを一覧表示する方法を学びます。すべてのモジュールを表示する方法、JSON 形式で出力を表示する方法、モジュール ID のみを抽出する方法など、さまざまな方法を探求します。このハンズオン演習を通じて、Docker インストールの構成要素とそれらに関する情報を取得する方法を理解できるようになります。

Docker Desktop モジュールの一覧表示

このステップでは、docker versionコマンドを使用して Docker Desktop のすべてのモジュールを一覧表示する方法を学びます。docker versionコマンドは、Docker インストールに関する詳細情報(クライアントとサーバーコンポーネント、Docker Desktop インストールに含まれるモジュールなど)を提供します。

Docker Desktop のすべてのモジュールを一覧表示するには、ターミナルを開き、次のコマンドを実行します:

docker version

このコマンドを実行すると、Docker インストールに関する多くの情報が出力されます。ClientServerといったセクションを探してください。これらのセクション内に、さまざまなコンポーネントとモジュールの詳細情報が記載されています。

例えば、出力は次のようになります(正確な出力は、Docker のバージョンとインストール環境によって異なります):

Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.16.15
 Git commit:        f2213a1
 Built:             Thu Oct 27 00:18:36 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.15
  Git commit:       3056e8c
  Built:            Thu Oct 27 00:17:23 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.8
  GitCommit:        9cd358bba7fd9c7bb19904ba6d2f58fd60b1ca2b
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

この出力では、Docker Engine、containerd、runc、docker-init に関する情報を確認できます。これらは Docker 環境を構成する主要なモジュールです。docker versionコマンドは、Docker インストールのさまざまなコンポーネントとそのバージョンを理解するのに役立つツールです。

JSON 形式で Docker Desktop モジュールを一覧表示

前のステップでは、docker versionコマンドを使用して Docker Desktop モジュールを一覧表示しました。デフォルトの出力は人間が読みやすい形式ですが、スクリプト処理やさらなる加工のために、JSON のような構造化された形式で出力が必要になる場合があります。

docker versionコマンドは、Go の text/template パッケージを使用して出力形式を指定できる--formatフラグをサポートしています。JSON 形式で出力するには、json .テンプレートを使用します。

ターミナルで次のコマンドを実行してください:

docker version --format '{{json .}}'

このコマンドはdocker versionと同じ情報を出力しますが、JSON オブジェクトとしてフォーマットされます。{{json .}}の部分は、Docker に対して出力全体 (.) を JSON としてフォーマットするよう指示するテンプレートです。

出力は次のような 1 行の JSON データになります(読みやすく整形済み):

{
  "Client": {
    "Version": "20.10.21",
    "ApiVersion": "1.41",
    "GoVersion": "go1.16.15",
    "GitCommit": "f2213a1",
    "Built": "Thu Oct 27 00:18:36 2022",
    "OsArch": "linux/amd64",
    "Context": "default",
    "Experimental": true
  },
  "Server": {
    "Engine": {
      "Version": "20.10.21",
      "ApiVersion": "1.41",
      "MinAPIVersion": "1.12",
      "GoVersion": "go1.16.15",
      "GitCommit": "3056e8c",
      "Built": "Thu Oct 27 00:17:23 2022",
      "OsArch": "linux/amd64",
      "Experimental": false
    },
    "Containerd": {
      "Version": "1.6.8",
      "GitCommit": "9cd358bba7fd9c7bb19904ba6d2f58fd60b1ca2b"
    },
    "Runc": {
      "Version": "1.1.4",
      "GitCommit": "v1.1.4-0-g5fd4c4d"
    },
    "DockerInit": {
      "Version": "0.19.0",
      "GitCommit": "de40ad0"
    }
  }
}

この JSON 出力には、デフォルト出力と同じ情報が含まれていますが、プログラムが解析しやすい構造化された形式になっています。これは特に、docker versionの出力から特定の情報をスクリプトで抽出したい場合に便利です。

Docker Desktop モジュールの ID のみを一覧表示

前のステップでは、Docker Desktop モジュールをすべて一覧表示する方法と、出力を JSON 形式でフォーマットする方法を学びました。ここでは、モジュールの Git コミット ID など特定の情報のみを抽出する方法を探ってみましょう。これは、スクリプトや自動化のために特定のデータのみが必要な場合に便利です。

ここでも--formatフラグとカスタムテンプレートを使用して実現できます。前のステップの JSON 出力を確認すると、Git コミット ID はServer.Engine.GitCommitServer.Containerd.GitCommitServer.Runc.GitCommitServer.DockerInit.GitCommitに配置されていることがわかります。

これらの特定のフィールドを抽出するテンプレートを構築できます。ターミナルで次のコマンドを実行してください:

docker version --format 'Engine GitCommit: {{.Server.Engine.GitCommit}}\nContainerd GitCommit: {{.Server.Containerd.GitCommit}}\nRunc GitCommit: {{.Server.Runc.GitCommit}}\nDockerInit GitCommit: {{.Server.DockerInit.GitCommit}}'

テンプレートを分解してみましょう:

  • Engine GitCommit: {{.Server.Engine.GitCommit}}: Serverオブジェクト内のEngineオブジェクトからGitCommit値を抽出します
  • \n: 各モジュールの出力を区切るための改行文字を追加します
  • Containerd GitCommit: {{.Server.Containerd.GitCommit}}: containerd のGitCommitを抽出します
  • Runc GitCommit: {{.Server.Runc.GitCommit}}: runc のGitCommitを抽出します
  • DockerInit GitCommit: {{.Server.DockerInit.GitCommit}}: docker-init のGitCommitを抽出します

出力は、指定された各モジュールの Git コミット ID を表示します。例:

Engine GitCommit: 3056e8c
Containerd GitCommit: 9cd358bba7fd9c7bb19904ba6d2f58fd60b1ca2b
Runc GitCommit: v1.1.4-0-g5fd4c4d
DockerInit GitCommit: de40ad0

これは、Docker コマンドから特定のデータを抽出するための--formatフラグと Go テンプレートの強力な機能を示しています。docker version出力で利用可能な任意のフィールドを抽出するようにテンプレートをカスタマイズできます。

まとめ

この実験では、docker versionコマンドを使用して Docker Desktop モジュールを一覧表示する方法を学びました。Docker Engine、containerd、runc、docker-init などの Docker インストールのさまざまなコンポーネントとそのバージョンに関する貴重な情報を提供する、すべてのモジュールとその詳細を表示する方法を探りました。

また、プログラムによる処理や他のツールとの統合に役立つ、JSON 形式で Docker Desktop モジュールを一覧表示する方法も学びました。最後に、Docker Desktop モジュールの ID のみを一覧表示する方法を説明し、迅速な識別のための簡潔な出力を提供しました。