docker node inspect コマンドを使ってノードの詳細を表示する方法

DockerDockerBeginner
今すぐ練習

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

はじめに

この実験では、docker node inspect コマンドを使用して Docker Swarm ノードの詳細情報を表示する方法を学習します。まず、ノードの ID を使用して単一のノードを調査し、次に 'self' キーワードを使用して現在のノードを調査する方法を探ります。最後に、特定の情報を表示するために出力をフォーマットする方法と、ノードの詳細をより読みやすくするために整形出力する方法を学習します。この実践的な経験を通じて、Docker Swarm ノードの構成と状態を効果的に調査し理解するスキルを身につけることができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") subgraph Lab Skills docker/inspect -.-> lab-555181{{"docker node inspect コマンドを使ってノードの詳細を表示する方法"}} docker/version -.-> lab-555181{{"docker node inspect コマンドを使ってノードの詳細を表示する方法"}} end

単一のノードを調査する

このステップでは、単一の Docker ノードを調査する方法を学びます。docker node inspect コマンドは、Docker Swarm 内の特定のノードに関する詳細情報を提供します。

まず、LabEx VM にインストールされている Docker のバージョンを確認しましょう。

docker version

以下のような出力が表示され、Docker のバージョンが 20.10.21 であることが示されます。

Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.9
 Git commit:        baedd2f
 Built:             Tue Oct 25 17:58:10 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.18.9
  Git commit:       305620d
  Built:            Tue Oct 25 17:56:04 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.10
  GitCommit:        b35cd9b83c7c7b1200458f9f9f8d73288d61e58e
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

次に、Docker Swarm を初期化しましょう。これは、調査するノードを用意するために必要です。

docker swarm init

以下のように、Swarm が初期化され、参加トークンが表示される出力が表示されます。

Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 172.17.0.2:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

この出力から、現在のノードがマネージャーになったことがわかります。xxxxxxxxxxxx は現在のノードの ID です。この ID を使用してノードを調査します。

では、現在のノードの ID を使用して、そのノードを調査しましょう。YOUR_NODE_IDdocker swarm init の出力から得られた実際のノード ID に置き換えてください。

docker node inspect YOUR_NODE_ID

たとえば、ノード ID が abcdef123456 の場合、コマンドは次のようになります。

docker node inspect abcdef123456

このコマンドを実行すると、ノードの状態、役割、ホスト名など、ノードに関する詳細情報を含む大きな JSON オブジェクトが出力されます。

'self' を使用して現在のノードを調査する

前のステップでは、特定のノード ID を使用してノードを調査しました。Docker Swarm では、現在のノードを参照するための便利なエイリアス self が用意されています。これは、ノード ID を知らなくても、現在操作しているノードを調査したい場合に便利です。

self エイリアスを使用して、現在のノードを調査しましょう。

docker node inspect self

このコマンドは、ノード ID を使用してノードを調査した場合と同じ詳細な JSON 出力を生成します。self を使用すると、コマンドがより移植性が高く、使いやすくなります。特にスクリプト内で、またはノード ID がすぐに利用できない場合に便利です。

出力は、前のステップで見たものと同様の大きな JSON オブジェクトになります。この JSON には、現在のノードのすべての構成と状態情報が含まれています。

特定の情報を表示するように出力をフォーマットする

前のステップでは、docker node inspect が大きな JSON オブジェクトを出力することを見ました。多くの場合、この出力から特定の情報のみが必要になります。Docker では、Go の text/template パッケージを使用して特定のデータを抽出し、フォーマットするための --format フラグが用意されています。

--format フラグを使用して、現在のノードのホスト名のみを表示しましょう。ホスト名は、JSON 出力内の .Description.Hostname パスにあります。

docker node inspect --format '{{ .Description.Hostname }}' self

このコマンドは、現在のノードのホスト名のみを出力します。{{ .Description.Hostname }} の部分は、JSON 出力の Description オブジェクト内の Hostname フィールドにアクセスするための Go テンプレート構文です。

次に、ノード ID とノードの可用性を表示してみましょう。ノード ID は .ID パスにあり、可用性は .Spec.Availability パスにあります。フォーマット文字列内で複数のフィールドを組み合わせることができます。

docker node inspect --format 'ID: {{ .ID }}, Availability: {{ .Spec.Availability }}' self

このコマンドは、ノード ID とその可用性をより読みやすい形式で出力します。この手法を使用して、docker node inspect の JSON 出力から任意のフィールドを抽出することができます。

ノード情報を整形して表示する

前のステップでは、生の JSON 出力と特定のフィールドの抽出方法を見ました。時には、生の JSON を自分で解析することなく、ノード情報をより人間が読みやすい構造化された形式で表示したい場合があります。docker node inspect コマンドには、この目的のために --pretty フラグが用意されています。

--pretty フラグを使用して、ノード情報をより読みやすい形式で表示しましょう。

docker node inspect --pretty self

このコマンドは、ノードの ID、ホスト名、ステータス、可用性、役割などの情報を整形した要約を出力します。この出力は、生の JSON と比較して、一目で読みやすく理解しやすいです。

出力は次のようになります。

ID:             abcdef123456
Hostname:       labex-vm
Status:         Ready
Availability:   Active
Manager Status:
  Address:      172.17.0.2:2377
  Reachability: Reachable
  Leader:       Yes
Platform:
  Architecture: x86_64
  OS:           linux
Resources:
  NanoCPUs:     2000000000
  MemoryBytes:  4177903616
Engine Version: 20.10.21

この整形された出力は、Docker Swarm 内のノードのステータスと主要な詳細をすばやく確認するのに非常に便利です。

まとめ

この実験では、docker node inspect コマンドを使用して Docker Swarm ノードの詳細情報を表示する方法を学びました。Docker Swarm を初期化した後、ノードの ID を使用して単一のノードを調査することから始めました。

次に、エイリアス 'self' を使用して現在のノードを調査する方法を探りました。最後に、特定の情報を表示するように出力をフォーマットする方法と、ノードの詳細をより読みやすく整形して表示する方法を学びました。