docker node update コマンドを使って Swarm ノードを管理する方法

DockerDockerBeginner
今すぐ練習

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

はじめに

この実験では、docker node update コマンドを使用して Docker Swarm ノードを管理する方法を学びます。このコマンドの様々な機能を探索します。具体的には、タスクの配置を制御するためにノードの可用性を更新したり、タスクスケジューリングの制約条件に基づいてノードを分類するためにラベルを追加および削除したり、Swarm 内でノードの役割を変更したりします。

実践的な演習を通じて、新しいタスクを防止するためにノードを一時停止したり、ノードに単一または複数のラベルを追加したり、既存のラベルを削除したり、ワーカーノードをマネージャーロールに昇格させたりすることを練習します。これらの手順により、Docker Swarm クラスター内のノードの状態と属性を管理する実践的な経験を積むことができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/exec("Execute Command in Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") subgraph Lab Skills docker/ls -.-> lab-555186{{"docker node update コマンドを使って Swarm ノードを管理する方法"}} docker/ps -.-> lab-555186{{"docker node update コマンドを使って Swarm ノードを管理する方法"}} docker/exec -.-> lab-555186{{"docker node update コマンドを使って Swarm ノードを管理する方法"}} docker/inspect -.-> lab-555186{{"docker node update コマンドを使って Swarm ノードを管理する方法"}} end

ノードの可用性を一時停止状態に更新する

このステップでは、Docker Swarm 内のノードの可用性を更新する方法を学びます。ノードの可用性は、ノードが新しいタスクを受け取ることができるかどうかを決定します。可能な可用性の状態は activepausedrain です。

  • active:ノードは新しいタスクを受け取ることができます。これはデフォルトの状態です。
  • pause:ノードは新しいタスクを受け取らず、既存のタスクは引き続き実行されます。
  • drain:ノードは新しいタスクを受け取らず、既存のタスクは停止され、他のノードに再スケジュールされます。

現在のノードの可用性を pause に変更します。まず、現在のノードの ID を見つける必要があります。docker node ls コマンドを使用して、Swarm 内のノードを一覧表示できます。

docker node ls

出力には、ノードの ID、ホスト名、ステータス、可用性、およびマネージャーステータスを含むノードのリストが表示されます。現在作業しているノードの ID を特定します。

次に、--availability pause フラグとノード ID を指定して docker node update コマンドを使用し、ノードの可用性を変更します。<node_id> を実際のノード ID に置き換えてください。

docker node update --availability pause <node_id>

コマンドを実行した後、再度 docker node ls を実行して変更を確認できます。あなたのノードの可用性は現在 pause になっているはずです。

docker node ls

ノードにラベルを追加する

このステップでは、Docker Swarm 内のノードにラベルを追加する方法を学びます。ラベルは、ノードに付与できるキーと値のペアです。特定の基準に基づいてノードを整理し、選択する際に役立ち、タスク配置の制約条件に使用することができます。

現在のノードに、キーが env、値が dev のラベルを追加します。まず、前のステップでノード ID を取得していることを確認してください。取得していない場合は、docker node ls を使用して再度取得できます。

docker node ls

次に、--label-add フラグ、key=value 形式のラベル、およびノード ID を指定して docker node update コマンドを使用します。<node_id> を実際のノード ID に置き換えてください。

docker node update --label-add env=dev <node_id>

ラベルを追加した後、ノードを調べて追加されたラベルを確認できます。docker node inspect コマンドの後にノード ID を指定して実行します。

docker node inspect <node_id>

出力の Labels セクションを探してください。そこに env: dev のラベルが表示されているはずです。

ノードに複数のラベルを追加する

このステップでは、ノードに複数のラベルを同時に追加する方法を学びます。追加したい各ラベルに対して --label-add フラグを繰り返し使用することで、複数のラベルを追加できます。

現在のノードに 2 つの新しいラベルを追加します。キーが tier で値が frontend のラベルと、キーが region で値が us-east のラベルです。前のステップでノード ID を取得していることを確認してください。

複数の --label-add フラグとノード ID を指定して docker node update コマンドを使用します。<node_id> を実際のノード ID に置き換えてください。

docker node update --label-add tier=frontend --label-add region=us-east <node_id>

ラベルを追加した後、再度ノードを調べて、すべてのラベルが正しく追加されたことを確認します。

docker node inspect <node_id>

出力の Labels セクションには、env: devtier: frontendregion: us-east が表示されているはずです。

ノードからラベルを削除する

このステップでは、Docker Swarm 内のノードからラベルを削除する方法を学びます。docker node update コマンドに --label-rm フラグを付け、その後にラベルのキーを指定することで、ラベルを削除できます。

前のステップで追加した region ラベルを削除します。ノード ID を持っていることを確認してください。

--label-rm フラグとラベルのキー (region) を指定し、その後にノード ID を続けて docker node update コマンドを使用します。<node_id> を実際のノード ID に置き換えてください。

docker node update --label-rm region <node_id>

ラベルを削除した後、再度ノードを調べて、ラベルが削除されたことを確認します。

docker node inspect <node_id>

出力の Labels セクションには、env: devtier: frontend が表示されるはずですが、region: us-east のラベルは削除されているはずです。

ノードの役割をマネージャーに更新する

このステップでは、Docker Swarm 内のノードの役割を更新する方法を学びます。ノードは manager または worker の 2 つの役割のいずれかを持つことができます。マネージャーノードは Swarm の管理タスクを処理し、ワーカーノードはサービスを実行します。

現在のノードをマネージャー役割に昇格させます。ノード ID を持っていることを確認してください。

--role manager フラグとノード ID を指定して docker node update コマンドを使用します。<node_id> を実際のノード ID に置き換えてください。

docker node update --role manager <node_id>

役割を更新した後、ノードを一覧表示することで変更を確認します。

docker node ls

出力には、あなたのノードの役割が Manager と表示されているはずです。

まとめ

この実験では、docker node update コマンドを使用して Docker Swarm のノードを管理する方法を学びました。いくつかの重要な操作を扱いました。その中には、ノードの可用性を pause に更新して、既存のタスクを継続実行させながら新しいタスクの受け付けを防止する操作も含まれています。

さらに、ノードにラベルを追加および削除する方法を調べました。--label-add key=value を使用して単一のラベルを追加する方法や、複数のラベルを同時に追加する方法を学びました。また、--label-rm key を使用して特定のラベルを削除する練習も行いました。最後に、ノードの役割を manager に変更する方法を実証し、docker node update コマンドが Docker Swarm 内のノードの状態と設定を管理する際の柔軟性を強調しました。