Docker Swarm クラスターにワーカーノードを参加させる方法

DockerDockerBeginner
今すぐ練習

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

はじめに

このチュートリアルでは、ワーカーノードを Docker Swarm クラスターに参加させる手順を案内します。この記事の最後まで読むと、Docker Swarm 環境のセットアップと管理方法、およびコンテナ化されたアプリケーションをスケールするために新しいノードをクラスターにシームレスに追加する方法を理解できるようになります。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/restart("Restart Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/run -.-> lab-411561{{"Docker Swarm クラスターにワーカーノードを参加させる方法"}} docker/ps -.-> lab-411561{{"Docker Swarm クラスターにワーカーノードを参加させる方法"}} docker/start -.-> lab-411561{{"Docker Swarm クラスターにワーカーノードを参加させる方法"}} docker/stop -.-> lab-411561{{"Docker Swarm クラスターにワーカーノードを参加させる方法"}} docker/restart -.-> lab-411561{{"Docker Swarm クラスターにワーカーノードを参加させる方法"}} docker/create -.-> lab-411561{{"Docker Swarm クラスターにワーカーノードを参加させる方法"}} docker/network -.-> lab-411561{{"Docker Swarm クラスターにワーカーノードを参加させる方法"}} docker/build -.-> lab-411561{{"Docker Swarm クラスターにワーカーノードを参加させる方法"}} end

Docker Swarm 入門

Docker Swarm は、Docker コンテナ用のネイティブなクラスタリングおよびオーケストレーションソリューションです。これにより、複数の Docker ホストを管理し、それらにアプリケーションをデプロイすることができ、高可用性、ロードバランシング、およびスケーラビリティを提供します。

Docker Swarm とは?

Docker Swarm は Docker Engine に組み込まれた機能で、複数の Docker ホストを 1 つの仮想的な Docker ホストにクラスタリングすることができます。これにより、複数のホストにまたがってコンテナ化されたアプリケーションを管理およびスケールすることができ、障害許容性と高可用性を提供します。

Docker Swarm の主要概念

  1. Swarm(クラスター): Swarm は、Docker Engine を実行し、クラスターを形成するために結合された Docker ホスト(物理または仮想)のグループです。
  2. Node(ノード): Node は、Swarm の一部である単一の Docker ホストです。ノードは、Manager(マネージャー)または Worker(ワーカー)のいずれかになります。
  3. Manager Node(マネージャーノード): マネージャーノードは、Swarm の状態を管理し、タスクをスケジュールし、クラスターの望ましい状態を維持する役割を担います。
  4. Worker Node(ワーカーノード): ワーカーノードは、マネージャーノードからの指示に従って実際のコンテナを実行する役割を担います。
  5. Service(サービス): サービスは、アプリケーションを Swarm 全体にどのようにデプロイし、スケールするかを宣言的に定義する方法です。
graph TD A[Docker Host] --> B[Docker Host] B[Docker Host] --> C[Docker Host] C[Docker Host] --> D[Docker Host] D[Docker Host] --> A[Docker Host] A --- E[Manager Node] B --- F[Worker Node] C --- G[Worker Node] D --- H[Worker Node]

Docker Swarm の利点

  • 高可用性: Docker Swarm は自動的なロードバランシングとフェイルオーバーを提供し、アプリケーションが高可用性を維持することを保証します。
  • スケーラビリティ: Swarm にノードを追加または削除することで、アプリケーションを簡単にスケールアップまたはスケールダウンすることができます。
  • 簡単さ: Docker Swarm は Docker Engine に組み込まれた機能であるため、セットアップと管理が簡単です。
  • 統合性: Docker Swarm は、Docker Compose や Docker Registry などの他の Docker ツールやサービスとシームレスに統合されます。

Docker Swarm クラスターのセットアップ

前提条件

Docker Swarm クラスターをセットアップする前に、以下の条件を満たしていることを確認してください。

  1. Docker Engine がインストールされた少なくとも 2 つの Ubuntu 22.04 ホスト(物理または仮想)。
  2. ホストへの SSH アクセス。

手順 1: Swarm の初期化

いずれかのホストで、以下のコマンドを実行して Swarm を初期化します。

docker swarm init --advertise-addr <HOST_IP_ADDRESS>

<HOST_IP_ADDRESS> をホストの IP アドレスに置き換えてください。

このコマンドの出力には、他のノードを Swarm に追加するために使用するジョイントークンが含まれます。

手順 2: ワーカーノードを Swarm に追加する

他のホストで、前の手順で出力されたコマンドを実行して、ワーカーノードとして Swarm に参加させます。

docker swarm join --token <TOKEN> <HOST_IP_ADDRESS>:2377

<TOKEN> を Swarm 初期化時に出力されたトークンに、<HOST_IP_ADDRESS> をマネージャーノードの IP アドレスに置き換えてください。

手順 3: Swarm の確認

マネージャーノードで以下のコマンドを実行して、Swarm 内のノードを表示します。

docker node ls

出力にはマネージャーノードとワーカーノードが表示されるはずです。

手順 4: サービスのデプロイ

Swarm のセットアップをテストするために、簡単なサービスをデプロイします。

docker service create --name nginx --publish 80:80 nginx

これにより、"nginx" という名前のサービスが作成され、Swarm 全体にデプロイされます。

graph TD A[Manager Node] --> B[Worker Node] B[Worker Node] --> C[Worker Node] C[Worker Node] --> A[Manager Node] A -- "docker swarm init" --> D[Swarm] B -- "docker swarm join" --> D[Swarm] C -- "docker swarm join" --> D[Swarm] D -- "docker service create" --> E[Nginx Service]

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

前提条件

ワーカーノードを Swarm に参加させる前に、以下の条件を満たしていることを確認してください。

  1. 少なくとも 1 つのマネージャーノードを持つ稼働中の Docker Swarm クラスター。
  2. ワーカーノードとして参加させたいホストへの SSH アクセス。

手順 1: 参加コマンドを取得する

マネージャーノードで、以下のコマンドを実行してワーカーノード用の参加コマンドを取得します。

docker swarm join-token worker

これにより、以下のようなコマンドが出力されます。

docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s7p15g43pits9-8y0wywnrwwt7a4vox4vx9v68r 192.168.0.16:2377

手順 2: ワーカーノードとして Swarm に参加する

ワーカーノードとして参加させたいホストで、前の手順で取得したコマンドを実行します。

docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s7p15g43pits9-8y0wywnrwwt7a4vox4vx9v68r 192.168.0.16:2377

これにより、ホストがワーカーノードとして Swarm に参加します。

手順 3: ノードが Swarm に参加したことを確認する

マネージャーノードで、以下のコマンドを実行して Swarm 内のノードを一覧表示します。

docker node ls

出力に新しいワーカーノードが表示されるはずです。

graph TD A[Manager Node] --> B[Worker Node] B[Worker Node] --> C[Worker Node] C[Worker Node] --> A[Manager Node] A -- "docker swarm join-token worker" --> D[Join Command] B -- "docker swarm join" --> A[Manager Node]

これらの手順に従うことで、新しいワーカーノードを Docker Swarm クラスターに簡単に参加させることができ、コンテナ化されたアプリケーションの容量と耐性を拡張することができます。

まとめ

この Docker チュートリアルでは、Docker Swarm クラスターのセットアップ方法と、ワーカーノードをそれに参加させる方法を学びました。Swarm に新しいノードを追加することで、Docker ベースのアプリケーションを簡単にスケールし、高可用性の分散環境を構築することができます。このガイドから得た知識を活かして、拡大するビジネスニーズに対応するために、自信を持って Docker Swarm インフラストラクチャを管理および拡張することができます。