docker swarm join コマンドを使ってノードを追加する方法

DockerDockerBeginner
今すぐ練習

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

はじめに

この実験では、docker swarm join コマンドを使用して既存の Docker Swarm にノードを追加する方法を学びます。マネージャーによって割り当てられたタスクを実行するワーカーノードとして、および Swarm 管理に参加するマネージャーノードとしてノードを参加させるプロセスを説明します。

また、--availability フラグを調べ、ノードを参加させる際にこのフラグを使用して Swarm 内での初期可用性を制御する方法を理解します。この実践的な実験を通じて、Docker Swarm クラスターを拡張するための重要な手順に関する実際の経験を積むことができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/exec("Execute Command in Container") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/run -.-> lab-555241{{"docker swarm join コマンドを使ってノードを追加する方法"}} docker/ps -.-> lab-555241{{"docker swarm join コマンドを使ってノードを追加する方法"}} docker/exec -.-> lab-555241{{"docker swarm join コマンドを使ってノードを追加する方法"}} docker/network -.-> lab-555241{{"docker swarm join コマンドを使ってノードを追加する方法"}} end

ワーカーとしてノードを Swarm に参加させる

このステップでは、ワーカーとして既存の Docker Swarm にノードを参加させる方法を学びます。ワーカーノードは、Swarm にデプロイされたサービスを実行するマシンです。マネージャーノードによって割り当てられたタスクを受け取り、実行します。

ノードを Swarm に参加させる前に、実行中の Docker Swarm マネージャーノードが必要です。この実験では、Swarm がすでに初期化されており、ワーカーノード用の参加トークンがあると仮定します。

まず、参加トークンを持っている状況をシミュレートしましょう。実際のシナリオでは、docker swarm join-token worker コマンドを使用してマネージャーノードからこのトークンを取得します。この実験では、プレースホルダートークンを使用します。

マネージャーが提供する参加コマンドが次のようなものであると仮定しましょう。

docker swarm join --token SWMTKN-1-abcdefghijklmnopqrstuvwxyz-1234567890abcdef --advertise-addr <THIS_NODE_IP> <MANAGER_IP>:2377

このコマンドでは:

  • docker swarm join:これはノードを Swarm に参加させるコマンドです。
  • --token SWMTKN-1-abcdefghijklmnopqrstuvwxyz-1234567890abcdef:これはノードを Swarm に認証するための一意のトークンです。
  • --advertise-addr <THIS_NODE_IP>:このフラグは、参加するノードが Swarm 内の他のノードに自分自身をアドバタイズするために使用する IP アドレスを指定します。<THIS_NODE_IP> を参加するノードの実際の IP アドレスに置き換えてください。
  • <MANAGER_IP>:2377:これは Swarm 内のマネージャーノードのアドレスです。参加するノードはこのアドレスに接続して Swarm に参加します。<MANAGER_IP> をマネージャーノードの実際の IP アドレスに置き換えてください。デフォルトの Swarm ポートは 2377 です。

この実験では単一の VM 環境で作業しているため、簡略化したコマンドを使用して参加プロセスをシミュレートします。マネージャー IP として 127.0.0.1 とプレースホルダートークンを使用します。

次のコマンドを実行して、ワーカーとして Swarm に参加するシミュレーションを行います。この単一の VM 設定では、このコマンドは実際には実際の Swarm に参加しませんが、コマンドの構造を示しています。

docker swarm join --token SWMTKN-1-abcdefghijklmnopqrstuvwxyz-1234567890abcdef 127.0.0.1:2377

ノードが Swarm に参加しようとしていることを示す出力が表示されるはずです。実際のシナリオでは、参加が成功すると、「This node joined a swarm as a worker.」のようなメッセージが表示されます。

マネージャーとしてノードを Swarm に参加させる

このステップでは、マネージャーとして既存の Docker Swarm にノードを参加させる方法を学びます。マネージャーノードは、Swarm の状態の維持、サービスのスケジューリング、Swarm 全体の操作の処理など、Swarm 管理タスクを担当します。高可用性のために、Swarm には複数のマネージャーノードを持つことができます。

ワーカーとして参加する場合と同様に、マネージャーとして参加するには、既存のマネージャーノードから参加トークンが必要です。既存のマネージャーノードからマネージャー参加トークンを取得するコマンドは docker swarm join-token manager です。

マネージャーノードの参加コマンドが次のようなものであると仮定しましょう。

docker swarm join --token SWMTKN-1-abcdefghijklmnopqrstuvwxyz-1234567890abcdef --advertise-addr <THIS_NODE_IP> <MANAGER_IP>:2377

コマンドの構造はワーカーとして参加する場合と同じですが、トークンが異なることに注意してください。マネージャーノードに参加するためのトークンは一意であり、より高い権限を付与します。

この実験では、再び単一の VM 環境で、プレースホルダーのマネージャートークンと 127.0.0.1 をマネージャー IP として使用して参加プロセスをシミュレートします。

次のコマンドを実行して、マネージャーとして Swarm に参加するシミュレーションを行います。

docker swarm join --token SWMTKN-1-ABCDEFGHIJKLMNOPQRSTUVWXYZ-0987654321fedcba 127.0.0.1:2377

ノードが Swarm に参加しようとしていることを示す出力が表示されるはずです。実際のマルチノード Swarm では、参加が成功すると、「This node joined a swarm as a manager.」のようなメッセージが表示されます。

参加時の --availability フラグの理解と使用

このステップでは、ノードを Docker Swarm に参加させる際に使用できる --availability フラグについて説明します。--availability フラグは、ノードがタスクのスケジューリングに利用可能かどうかを制御します。これは、ノードのメンテナンスを管理したり、ノードを Swarm から削除せずに一時的にサービスを停止したりする場合に特に有用です。

--availability フラグには、以下の 3 つの値のいずれかを指定できます。

  • active:ノードはタスクのスケジューリングに利用可能です。これは、新しく参加したノードのデフォルトの状態です。
  • pause:ノードには新しいタスクが割り当てられませんが、既存のタスクは引き続き実行されます。
  • drain:ノードには新しいタスクが割り当てられず、既存のタスクは停止され、他の利用可能なノードに再スケジューリングされます。

ノードを参加させる際には、その初期の可用性を指定できます。たとえば、ノードをワーカーとして参加させ、可用性を drain に設定するには、次のようなコマンドを使用します。

docker swarm join --token SWMTKN-1-abcdefghijklmnopqrstuvwxyz-1234567890abcdef --availability drain --advertise-addr <THIS_NODE_IP> <MANAGER_IP>:2377

この実験では、--availability drain フラグを使用してノードを参加させるシミュレーションを行います。再び、単一の VM 環境ではプレースホルダートークンと 127.0.0.1 をマネージャー IP として使用します。

次のコマンドを実行して、可用性を drain に設定して Swarm に参加するシミュレーションを行います。

docker swarm join --token SWMTKN-1-abcdefghijklmnopqrstuvwxyz-1234567890abcdef --availability drain 127.0.0.1:2377

ノードが参加しようとしていることを示す出力が表示されるはずです。実際の Swarm では、ノードは可用性が drain に設定されて参加し、つまり新しいタスクがスケジューリングされず、既存のタスクが移動されます。

まとめ

この実験では、docker swarm join コマンドを使用して既存の Docker Swarm にノードを追加する方法を学びました。ワーカーとしてノードを参加させるプロセスを調査し、参加トークン、マネージャーアドレス、および --advertise-addr フラグの役割を理解しました。また、マネージャーノードから取得した異なる参加トークンが必要な、マネージャーとしてノードを参加させる方法も調べました。最後に、--availability フラグについて学び、参加プロセス中にこのフラグを使用して Swarm 内のノードの初期可用性を制御する方法を学びました。