docker system info コマンドを使ってシステム情報を表示する方法

DockerDockerBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、docker info コマンドを使用して Docker システムに関する包括的な情報を表示する方法を学びます。まず、基本的な docker info コマンドを実行して、コンテナとイメージの数、ストレージドライバ、その他のシステムレベルの情報を含む Docker デーモンに関する詳細を表示します。

基本的な表示の後、docker info コマンドの出力をさまざまな方法でフォーマットする方法を探ります。具体的には、出力を JSON 形式にフォーマットして解析を容易にする方法と、カスタムテンプレートを使用して必要な特定の情報のみを表示する方法を学びます。この実験を通じて、Docker システム情報を効果的に取得して解釈するスキルを身につけることができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") subgraph Lab Skills docker/info -.-> lab-555249{{"docker system info コマンドを使ってシステム情報を表示する方法"}} end

基本的な Docker システム情報の表示

このステップでは、docker info コマンドを使用して Docker システムに関する基本的な情報を表示する方法を学びます。このコマンドは、コンテナとイメージの数、ストレージドライバ、その他のシステムレベルの情報を含む Docker デーモンに関する詳細を提供します。

LabEx 環境のターミナルを開きます。docker info コマンドを直接実行することができます。

docker info

以下のような出力が表示されるはずです(正確な詳細は環境によって異なります)。

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version: v0.10.4
    Build: 8842a472b58241d32996951f172f32259cd758e5
  compose: Docker Compose (Docker Inc.)
    Version: v2.17.2
    Build: 6833407
  scan: Docker Scan (Docker Inc.)
    Version: v0.23.0
    Build: 2c50987

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 20.10.21
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 9ba4b2555a59f71c4c1c1897e93a540b0c52b883
 runc version: v1.1.4-0-g5fd4c4d
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: default
  cgroupns
 Kernel Version: 5.15.0-76-generic
 Operating System: Ubuntu 22.04.2 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 3.84GiB
 Name: labex-vm
 ID: 6111111111111111111111111111111111111111111111111111111111111111
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: No blkio weight, cpus, or mem limits set, Docker may behave unexpectedly without them.

この出力は、Docker のインストール状況と現在の状態に関する包括的な概要を提供します。Docker のバージョン、実行中のコンテナとイメージの数、使用されているストレージドライバ、および基盤となるオペレーティングシステムやハードウェアに関する詳細などの情報を確認できます。

docker info の出力を JSON 形式にする

前のステップでは、docker info コマンドのデフォルト出力を見ました。この出力は人間が読みやすいですが、プログラムで解析するのは難しい場合があります。Docker は --format フラグを提供しており、出力形式をカスタマイズすることができます。このステップでは、docker info の出力を JSON 形式にする方法を学びます。

--format フラグは Go の text/template パッケージを使用します。情報を JSON として出力するには、. | json テンプレートを使用することができます。

ターミナルで以下のコマンドを実行します。

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

以前と同じ情報が表示されますが、今回は単一の JSON オブジェクトとしてフォーマットされています。

{
  "Client": {
    "Context": "default",
    "DebugMode": false,
    "Plugins": {
      "buildx": {
        "Version": "v0.10.4",
        "Build": "8842a472b58241d32996951f172f32259cd758e5"
      },
      "compose": {
        "Version": "v2.17.2",
        "Build": "6833407"
      },
      "scan": {
        "Version": "v0.23.0",
        "Build": "2c50987"
      }
    }
  },
  "Server": {
    "Containers": 0,
    "ContainersRunning": 0,
    "ContainersPaused": 0,
    "ContainersStopped": 0,
    "Images": 0,
    "ServerVersion": "20.10.21",
    "StorageDriver": "overlay2",
    "LoggingDriver": "json-file",
    "CgroupDriver": "systemd",
    "CgroupVersion": "2",
    "Plugins": {
      "Volume": ["local"],
      "Network": ["bridge", "host", "ipvlan", "macvlan", "null", "overlay"],
      "Log": [
        "awslogs",
        "fluentd",
        "gcplogs",
        "gelf",
        "journald",
        "json-file",
        "local",
        "logentries",
        "splunk",
        "syslog"
      ]
    },
    "Swarm": {
      "NodeID": "",
      "LocalNodeState": "inactive",
      "ControlAvailable": false,
      "Error": null,
      "RemoteManagers": null
    },
    "Runtimes": {
      "io.containerd.runc.v2": {
        "path": "io.containerd.runc.v2"
      },
      "io.containerd.runtime.v1.linux": {
        "path": "io.containerd.runtime.v1.linux"
      },
      "runc": {
        "path": "runc"
      }
    },
    "DefaultRuntime": "runc",
    "InitBinary": "docker-init",
    "ContainerdVersion": "9ba4b2555a59f71c4c1c1897e93a540b0c52b883",
    "RuncVersion": "v1.1.4-0-g5fd4c4d",
    "InitVersion": "de40ad0",
    "SecurityOptions": ["apparmor", "seccomp", "cgroupns"],
    "KernelVersion": "5.15.0-76-generic",
    "OperatingSystem": "Ubuntu 22.04.2 LTS",
    "OSType": "linux",
    "Architecture": "x86_64",
    "NCPU": 2,
    "MemTotal": 4123631616,
    "Name": "labex-vm",
    "ID": "6111111111111111111111111111111111111111111111111111111111111111",
    "DockerRootDir": "/var/lib/docker",
    "DebugMode": false,
    "ExperimentalBuild": false,
    "InsecureRegistries": ["127.0.0.0/8"],
    "LiveRestoreEnabled": false,
    "Warnings": [
      "No blkio weight, cpus, or mem limits set, Docker may behave unexpectedly without them."
    ]
  }
}

出力を JSON 形式にすると、他のツールやスクリプトで情報を処理する際に便利です。

カスタムテンプレートを使用して docker info の出力をフォーマットする

出力を JSON 形式にする他に、--format フラグとカスタムの Go テンプレートを使用して、docker info の出力から特定の情報を表示することができます。これにより、自分が関心のあるデータのみを抽出することができます。

docker info コマンドは、テンプレート内でアクセスできるデータ構造を提供します。たとえば、Docker サーバーのバージョンと CPU の総数を表示するには、'Server Version: {{.ServerVersion}}, CPUs: {{.NCPU}}' というテンプレートを使用できます。

ターミナルで以下のコマンドを実行します。

docker info --format 'Server Version: {{.ServerVersion}}, CPUs: {{.NCPU}}'

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

Server Version: 20.10.21, CPUs: 2

このテンプレートでは:

  • {{.ServerVersion}}docker info のデータ構造から ServerVersion フィールドにアクセスします。
  • {{.NCPU}}NCPU フィールドにアクセスします。このフィールドは CPU の数を表します。

前のステップの JSON 出力を調べることで、カスタムテンプレートに含めたい他のフィールドを特定することができます。たとえば、オペレーティングシステムと Docker のルートディレクトリを表示するには、'OS: {{.OperatingSystem}}, Docker Root Dir: {{.DockerRootDir}}' というテンプレートを使用できます。

このコマンドを実行してみてください。

docker info --format 'OS: {{.OperatingSystem}}, Docker Root Dir: {{.DockerRootDir}}'

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

OS: Ubuntu 22.04.2 LTS, Docker Root Dir: /var/lib/docker

カスタムテンプレートを使用することで、docker info コマンドの出力を細かく制御することができ、Docker の情報をスクリプトやレポートに簡単に組み込むことができます。

まとめ

この実験では、docker info コマンドを使用して Docker システムに関する包括的な情報を表示する方法を学びました。まず、基本的な docker info コマンドを実行して、コンテナとイメージの数、ストレージドライバ、その他のシステムレベルの情報を含む Docker デーモンの詳細を確認しました。

さらに、docker info コマンドの出力をフォーマットする方法を調べました。他のツールとの統合や解析を容易にするために、情報を JSON 形式で出力する方法を学び、また、カスタムの Go テンプレートを使用して特定の情報をカスタマイズされた形式で表示する方法も学びました。これらのフォーマットオプションにより、Docker システムの詳細にアクセスし、利用する方法に柔軟性がもたらされます。