docker node ls

読む時間の目安: 4 分

説明

Swarm 内ノードを一覧表示します。

API 1.24 以上  このコマンドを利用するには、クライアントとデーモンの API はともに、最低でも 1.24 である必要があります。 クライアント上においてdocker versionコマンドを実行して、クライアントとデーモンの API バージョンを確認してください。

Swarm このコマンドは Swarm オーケストレーターにおいて動作します。

利用方法

$ docker node ls [オプション]

追加説明

Swarm マネージャーが管理するノードを一覧表示します。 -fまたは--filterフラグを使ってフィルター検索を行うことができます。 フィルター検索時のオプションの詳細は フィルター検索 の節を参照してください。

メモ

これはクラスター管理コマンドであるため、Swarm のマネージャーノード上で実行する必要があります。 マネージャーノードとワーカーノードについては、本ドキュメントの Swarm モード を参照してください。

本コマンドの利用例については、以下に示す 利用例の節 を参照してください。

オプション

名前/省略形 デフォルト 説明
--filter , -f 指定された条件に基づいてフィルター検索を行います。
--format Go 言語テンプレートを使って出力をフォーマットします。
--quiet , -q ID のみを表示します。

利用例

$ docker node ls

ID                           HOSTNAME        STATUS  AVAILABILITY  MANAGER STATUS
1bcef6utixb0l0ca7gxuivsj0    swarm-worker2   Ready   Active
38ciaotwjuritcdtn9npbnkuz    swarm-worker1   Ready   Active
e216jshn25ckzbvmwlnh5jr3g *  swarm-manager1  Ready   Active        Leader

メモ

上の例における出力では、隠れ項目として.Selfがあります。 そのノードが、カレントな Docker デーモンとしてのノードであることを表わします。 アスタリスク *(例では e216jshn25ckzbvmwlnh5jr3g *)は、それがカレントな Docker デーモンのノードであることを意味しています。

フィルター検索

フィルターフラグ(-fまたは--filter)の指定書式は「キー=値」というものです。 複数のフィルターが必要な場合は、フラグを複数指定します。 (たとえば--filter "foo=bar" --filter "bif=baz"など。)

現在サポートされているフィルターは以下のとおりです。

id フィルター

idフィルターは、ノード ID の全部または一部を検索します。

$ docker node ls -f id=1

ID                         HOSTNAME       STATUS  AVAILABILITY  MANAGER STATUS
1bcef6utixb0l0ca7gxuivsj0  swarm-worker2  Ready   Active

label フィルター

labelフィルターは、Engine のlabelだけが存在する、あるいはlabelとその値が存在するノードを検索します。 Engine ラベルは デーモン設定 において定めます。 Swarm のnodeラベルに対しての検索は、これではなく node.label を用います。

以下の例ではfooラベルを持ったノードを抽出します。 この場合、その値の内容は問いません。

$ docker node ls -f "label=foo"

ID                         HOSTNAME       STATUS  AVAILABILITY  MANAGER STATUS
1bcef6utixb0l0ca7gxuivsj0  swarm-worker2  Ready   Active

node.label フィルター

node.labelフィルターはノードラベルに対応するノードを検索します。 node.labelのみの場合と、node.labelかつその値を指定した検索が可能です。

以下のフィルターでは、各ノードに対してregionというノードラベルを設定します。

$ docker node update --label-add region=region-a swarm-test-01
$ docker node update --label-add region=region-a swarm-test-02
$ docker node update --label-add region=region-b swarm-test-03
$ docker node update --label-add region=region-b swarm-test-04

regionというノードラベルを持つノードをすべて検索します。

$ docker node ls --filter node.label=region

ID                            HOSTNAME        STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
yg550ettvsjn6g6t840iaiwgb *   swarm-test-01   Ready     Active         Leader           20.10.2
2lm9w9kbepgvkzkkeyku40e65     swarm-test-02   Ready     Active         Reachable        20.10.2
hc0pu7ntc7s4uvj4pv7z7pz15     swarm-test-03   Ready     Active         Reachable        20.10.2
n41b2cijmhifxxvz56vwrs12q     swarm-test-04   Ready     Active                          20.10.2

regionというノードラベルを持ち、かつ値としてregion-aを持つものを検索します。

$ docker node ls --filter node.label=region=region-a

ID                            HOSTNAME        STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
yg550ettvsjn6g6t840iaiwgb *   swarm-test-01   Ready     Active         Leader           20.10.2
2lm9w9kbepgvkzkkeyku40e65     swarm-test-02   Ready     Active         Reachable        20.10.2

membership フィルター

membershipフィルターは、membershipというラベルが存在するノードであって、その値がacceptedpendingであるものを検索します。

以下の例では、membershipラベルにおいてacceptedが設定されているノードが抽出されます。

$ docker node ls -f "membership=accepted"

ID                           HOSTNAME        STATUS  AVAILABILITY  MANAGER STATUS
1bcef6utixb0l0ca7gxuivsj0    swarm-worker2   Ready   Active
38ciaotwjuritcdtn9npbnkuz    swarm-worker1   Ready   Active

name フィルター

nameフィルターは、ノード名の全部または一部を検索します。

以下のフィルター指定では、swarm-masterという名前に一致するノードすべてが検索されます。

$ docker node ls -f name=swarm-manager1

ID                           HOSTNAME        STATUS  AVAILABILITY  MANAGER STATUS
e216jshn25ckzbvmwlnh5jr3g *  swarm-manager1  Ready   Active        Leader

role フィルター

roleフィルターは、roleというラベルが存在するノードであって、その値がworkermanagerであるものを検索します。

以下の例では、managerロールが設定されているノードが抽出されます。

$ docker node ls -f "role=manager"

ID                           HOSTNAME        STATUS  AVAILABILITY  MANAGER STATUS
e216jshn25ckzbvmwlnh5jr3g *  swarm-manager1  Ready   Active        Leader

フォーマット設定

フォーマット設定オプション(--format)により Go 言語のテンプレートを利用して、ノードをわかりやすく出力することができます。

Go 言語テンプレートによるプレースホルダー(placeholder)は以下のとおりです。

プレースホルダー 内容説明
.ID ノード ID。
.Self デーモンノード。(true/falsetrue は現在の Docker デーモンとノードが同一であることを表わす)
.Hostname ノードホスト名。
.Status ノードのステータス。
.Availability ノードの利用可能性。(”active”、”pause”、”drain”)
.ManagerStatus ノードのマネージャーのステータス。
.TLSStatus ノードの TLS ステータス。(”Ready”、また “Needs Rotation” は TLS 証明書が古い CA により署名されている)
.EngineVersion Engine バージョン。

--format オプションを利用すると node ls コマンドは、テンプレートが定めるデータを直接出力します。 また table ディレクティブを利用すると、カラムヘッダーも同時に出力されます。

以下は、ヘッダーを含めずにテンプレートを利用する例であり、すべてのノードにおける IDHostnameTLS Status の各項目がコロン(:)で区切って表示されます。

$ docker node ls --format "{{.ID}}: {{.Hostname}} {{.TLSStatus}}"

e216jshn25ckzbvmwlnh5jr3g: swarm-manager1 Ready
35o6tiywb700jesrt3dmllaza: swarm-worker1 Needs Rotation

上位コマンド

コマンド 説明
docker node Swarm ノードを管理します。
コマンド 説明
docker node demote Swarm 内において 1 つあるいは複数のノードをマネージャーから降格させます。
docker node inspect 1 つまたは複数ノードに関する詳細情報を表示します。
docker node ls Swarm 内ノードを一覧表示します。
docker node promote Swarm 内において 1 つまたは複数ノードをマネージャーに昇格させます。
docker node ps 1 つまたは複数ノードにおいて実行中のタスク一覧を表示します。デフォルトはカレントノードのみです。
docker node rm 1 つまたは複数ノードを Swarm から削除します。
docker node update ノードを更新します。