Docker Swarm とは何ですか?またその仕組みは何ですか?

IT インフラストラクチャを管理するための主要なコンテナ オーケストレーション ソリューションである Docker Swarm を探索してください。 その独自の機能、動作原理、導入と拡張における利点を理解します。
所要時間
2023 年 8 月 4 日

サーバー、データベース、アプリケーションなど、ITインフラストラクチャの管理は大変な作業です。 コンテナオーケストレーション が登場します。複雑な環境を簡素化することで、時間を節約し、より効率的に運用できるようになります。

この記事では、Docker Swarm とは何か、どのように機能するか、主な機能、そしてコンテナ オーケストレーションで人気のある選択肢である理由について詳しく説明します。

Docker Swarm とは何ですか?

DockerSwarm は、Docker によって開発されたネイティブ コンテナ オーケストレーション ツールです。複数のマシンにわたるコンテナの管理とスケーリングを簡素化し、分散システムの最適化に役立ちます。Swarm は、1 つのマシンとして連携して機能する Docker ホストのクラスターです。

Swarm を使用すると、コンテナの展開、スケーリング、オーケストレーションを自動化でき、単一の仮想マシンで連携して機能する機能が提供され、リソース管理とワークロードの分散が合理化されます。Docker Swarm は最小限のリソースで適切に機能するため、他のソリューションの機能を必要としない小規模または中規模のプロジェクトに最適です。

Docker Swarm は、API と CLI を介して Docker にも接続します。つまり、Swarm は他の Docker ツールと互換性があり、Docker エコシステムにすでに精通している開発者にとっては使いやすくなります。

主要な取り組み

Docker Swarm は、クラスター内の複数のサーバーにわたって Docker コンテナを管理するコンテナ オーケストレーション ツールです。
スウォーム マネージャーはクラスターのアクティビティを監視し、ノードはスケーラビリティと信頼性を確保するためにリソースを提供します。
Docker Swarm は、コンテナ化されたアプリケーションに対して、負荷分散、サービス検出、フォールト トレランスなどの機能を提供します。
シンプルさと使いやすさが優先される小規模から中規模の展開に最適です。

Docker Swarm はどのように機能しますか?

Docker Swarmはオーケストレーションによって機能します コンテナ化されたアプリケーション マシンのクラスター全体にわたってコンテナを管理できるため、分散システムを簡単に維持できます。そのアーキテクチャと機能は、高い可用性とスケーラビリティを確保しながらコンテナ管理を簡素化するように設計されています。 

Docker Swarm は各 Swarm をいくつかの部分に分割します。

  • ノード: クラスター内の個々のマシン。マネージャー ノードが全体的な管理を処理し、ワーカー ノードがマネージャーによって指示されたタスクを実行します。
  • サービスとタスクの配分: Docker Swarm は、タスクをクラスターに分散して、ワークロードの均等な分散を確保し、リソースの最適化を処理します。サービスとは、これらのタスクを実行するワーカー ノード (コンテナー ホスト) 上のアプリケーションです。
  • 負荷分散: Docker Swarm には、実行中のコンテナ全体に着信トラフィックを分散してリソースを効率的に使用する組み込みの負荷分散機能が含まれています。監視ノードはワーカーの状態を監視し、正常なノードでタスクを再スケジュールして可用性を維持します。
  • ネットワーキング: Docker Swarm には、外部ポートの公開を必要とせずにノード間の通信を容易にするオーバーレイ ネットワークがあり、ノードが互いを自動的に検出できるようにするサービス検出が含まれています。
  • 監視と報告: Docker Swarm には、スウォームの状態に関するリアルタイムの洞察を提供し、問題を迅速に診断して解決できるように自動的に通知する監視およびレポート ツールが含まれています。
Docker Swarm アーキテクチャ
Docker Swarm アーキテクチャは、ノード、サービス、可用性、マネージャー、タスクという主要コンポーネントに基づいて構築されています。これらの要素が連携して効率的なコンテナ オーケストレーションを実現し、スケーラビリティ、フォールト トレランス、およびクラスター全体のワークロード分散を保証します。

Docker Swarmの主な機能

Docker Swarm には、Linux などのオペレーティング システムでのコンテナ オーケストレーションに最適なソリューションとなる強力な機能が多数あります。考慮すべき主な機能は次のとおりです。

簡単なセットアップと構成

API と CLI を簡単にセットアップ、構成、統合できるため、開発者は追加のツールや構成について心配する必要がありません。Docker Swarm は宣言型構成を特徴としており、アプリケーションとシステムの状態を定義して、クラスターがニーズに一致するようにします。

自動負荷分散

コンテナ内で実行されているコンテナにトラフィックを自動的に分散します。開発者がトラフィックを手動で分散する必要はありません。Docker Swarm がパラメータに基づいてこれを自動的に処理し、最適なパフォーマンスとリソース使用を保証します。

拡張性

Docker Swarm は、負荷の増加と減少を管理するのに役立つ柔軟なスケーラビリティを提供します。これは、ワークロードの変化に応じて Docker Swarm がノードを追加したり、コンテナ インスタンスの数を増やしたりする水平スケーリングによって実現されます。宣言型サービス モデルにより、期待どおりに動作するサービスを新しいノードに追加することも簡単になります。 

フォールトトレランス

Swarm マネージャーは、高可用性を確保するためにリーダー選出メカニズムを使用します。現在のリーダーが失敗した場合、タスクをスケジュールするために新しいリーダーが自動的に選出されます。ワーカー ノードに障害が発生した場合には、タスクの再スケジュール メカニズムも利用できます。

セキュリティ

デフォルトで TLS 暗号化を使用してノード通信を保護し、データのプライバシーと整合性を確保します。また、「デフォルトで安全」なアプローチも実現し、TLS やロールベースの認証などのセキュリティ機能を有効にします。

ローリングアップデート

Docker Swarm はローリング アップデートをサポートしており、変更を段階的に展開できます。これによりダウンタイムが短縮され、アップデート中でもシステムが稼働し続けることが保証されます。また、ロールバックも提供されており、問題が発生した場合に以前の構成に戻すことができます。

監視と洞察

組み込みツールは、環境の状態を監視するのに役立ちます。Docker Swarm は、ノード (ワーカーとマネージャー) の状態を監視し、解決する必要がある潜在的な問題を特定します。また、時間の経過に伴うパフォーマンスの追跡に役立つパフォーマンス メトリックを見つけて、リソースの使用状況とパフォーマンスの一貫性を確保することもできます。

Docker Swarmを使用する利点

Docker Swarm の多くの機能は、特に中規模から小規模の環境の開発者にとって魅力的な選択肢となっています。そのシンプルさと Docker 統合により、すぐに使い始めることができます。それがチームにどのように役立つかを見てみましょう。

  • Kubernetes のようなより複雑なオーケストレーション ツールと比較すると、Docker Swarm は学習と実装が簡単なので、さまざまな経験レベルのチームが利用できます。
  • これは Docker ネイティブ ツールであり、Docker エコシステムの他の部分と適切に統合されるため、開発者はツールを変更することなく他の Docker 構成から Docker Swarm に簡単に移行できます。
  • フォールト トレランスと負荷分散による高可用性が組み込まれているため、常にパフォーマンスを維持できます。
  • シンプルで軽量な Docker Swarm は、リソースが制限された環境に最適で、オーバーヘッドが最小限に抑えられます。
  • Docker Swarm の柔軟性により、複雑なマルチクラウド構成を必要とせずに、オンプレミスと単一クラウドの両方の環境にデプロイできます。また、増大するワークロードに対応できるスケーラビリティも提供します。
  • これにより、開発者の生産性が向上し、迅速なプロトタイピングとアプリケーションのテストが可能になり、開発サイクルが短縮されます。

Docker Swarm を使用すると、特に小規模から中規模のチームにとって、コンテナ化されたアプリケーションの管理がシームレスかつスケーラブルで簡単になります。

Docker Swarmの制限

Docker Swarm には、小規模な環境で使用する価値がある多くの機能がありますが、考慮すべき欠点もいくつかあります。そのいくつかを見てみましょう。

  • 開発者が使用するにはシンプルなシステムですが、ハイブリッド環境やマルチクラウド環境など、高度なオーケストレーション ツールが優れている複雑な環境では苦労します。
  • 外部ツールやプラグインとの統合が制限されているため、サードパーティに大きく依存するチームには適さない可能性があります。
  • Kubernetes が Docker オーケストレーションの業界標準になったため、人気が低下しており、他のツールに比べてコミュニティの関与とサポートが少なくなっています。
  • 高度なネットワーク機能、サービス メッシュ、自動スケーリング調整などの高度な機能が制限されています。

Docker Swarm モードとサービス

Docker Swarm は、Docker ノードのクラスタリングとオーケストレーションを可能にする組み込み機能である Swarm モードで動作します。Swarm モードでは、コンテナの展開をきめ細かく制御できるサービスとタスクの概念が導入されています。

タスク

タスクは実行中のコンテナのインスタンスを表します。Swarm モードでは、タスクはワーカー ノードに割り当てられ、Swarm によって管理されます。各タスクは不変であり、ノードに障害が発生した場合は再スケジュールされます。

サービス

サービスは、タスクがノード間でどのように分散されるかを定義します。Docker Swarm には 2 種類のサービスがあります。

  • 複製されたサービス: タスクのレプリカの数を指定すると、Swarm マネージャーは、定義された数のインスタンスがクラスター全体で実行されるようにします。
  • グローバルサービス: タスクは利用可能なすべてのノードで実行されます。これは、監視、ログ記録、またはネットワーク関連のタスクに役立ちます。

スウォームモードのモード

  • マネージャーモード: マネージャー ノードは、スウォーム全体のスケジュールとオーケストレーションの決定を行います。また、クラスターの状態を保存し、リーダーの選出を管理します。
  • ワーカーモード: ワーカーノードは、マネージャーノードによって割り当てられたタスクを実行し、そのステータスを報告します。

Docker Swarm と他のオーケストレーション ツールの比較

コンテナ オーケストレーションは XNUMX つのツールに限定されません。 Docker Swarm はシンプルで統合されたソリューションを提供しますが、Kubernetes や Apache Mesos などの他のツールには独自の強みがあります。

Docker Swarm と Kubernetes の比較

Docker Swarm と Kubernetes は、コンテナ オーケストレーションの 2 大リーダーです。Docker 専用に設計されたツールである Docker Swarm は、ユーザー フレンドリなインターフェイスと分かりやすさで知られています。負荷分散用の機能が組み込まれており、迅速かつシームレスなコンテナの展開が可能です。

対照的に、Google のオープンソース プラットフォームは、 Kubernetes Kubernetes は、コンテナ化されたアプリケーションの展開、スケーリング、管理を自動化する機能が高く評価されています。Kubernetes は複雑な環境を処理でき、さまざまなワークロード オプションを可能にしますが、その複雑さにより、セットアップと管理がさらに困難になります。

これらのプラットフォームは、使いやすさが際立っています。学習プロセスと簡単なインストールにより、Docker Swarm は、すでに Docker コマンドに精通している個人や、小規模から中規模のプロジェクトに取り組んでいる個人にとって最適な選択肢となります。対照的に、Kubernetes は、より大きなコミュニティと広範なサードパーティ統合の恩恵を受けており、さまざまなユーザー ツールのサポートとアクセスが向上しています。

Docker Swarm 対 Apache Mesos

Docker Swarm と Apache Mesos は、コンテナ化されたアプリケーションを効果的に管理するための強力なツールです。 どちらも、他とは異なる独自の機能と優れた機能を備えています。

Docker Swarm は、Docker コンテナのクラスタリングとスケジュール設定を行うためのシンプルでありながら強力なツールです。Docker サービスと統合され、負荷分散、安全なネットワーク、サービス検出、スケーリング機能などの主要な機能を提供します。

Apache Mesos は、Docker コンテナとさまざまなワークロードを効率的に管理する多目的クラスタ マネージャーです。比類のない柔軟性を提供します。

使いやすさに関しては、Docker Swarm がそのユーザーフレンドリーなインターフェイスと簡素化された学習プロセスで優れています。 ユーザーは、Docker と同じ API を使用して、新しいコマンドや概念を学習することなく、シームレスに移行できます。 一方、Apache Mesos はリソースに対するより優れた制御を提供しますが、セットアップと管理に関してより複雑な作業が必要となる場合があります。

どちらのツールもスケーラビリティとパフォーマンスの点で優れています。ただし、Apache Mesos は効率的な設計が大規模システム向けに明確に調整されているため、大規模なクラスターを管理するには最適な選択肢です。

Docker Swarm を使用すると、コンテナ オーケストレーションがシンプルになり、信頼性が高まり、不要な複雑さがなくなります。

Docker Swarmのユースケース

Docker Swarm は効率性に優れているため、多くのユースケースに最適です。何ができるか、いくつかの例を見てみましょう。

小規模から中規模のプロジェクト

Docker Swarmは軽量のオーケストレーションツールで、中小規模のプロジェクトに最適です。プロジェクトでKubernetesインストールの高度なスケーリングや機能が必要ない場合は、Docker Swarmを使用するとより迅速に起動して実行できます。これは、プロジェクトで最小限のハードウェアリソース(たとえば マイクロサービスDocker Swarm は最小限のリソースで実行されるため、たとえば、

一時的なクラスターと返済された展開

Docker Swarm を迅速にデプロイできるため、一時的なクラスター (テスト環境や DevOps 環境など) の管理や、イベント、キャンペーン、短期プロジェクトなどの迅速なデプロイ シナリオに最適です。チームは、複雑な Kubernetes のセットアップや長期的なメンテナンスについて心配する必要がなくなります。

シンプルな導入

Docker Swarm を使用すると、シンプルなコンテナ オーケストレーションが必要で、複雑な環境 (マルチクラウド ソリューションなど) を使用しないチームに、わかりやすいソリューションが提供されます。学習曲線が短く、構成が簡単なため、チームはすぐにデプロイできます (学習曲線が長すぎません)。

Docker に特化したプロジェクト

Docker エコシステムのネイティブ ツールである Docker Swarm を使用すると、チームは使い慣れたツールとワークフローを使用してコンテナ化されたアプリケーションを管理できます。Swarm を使用すると、チームは新しいシステムをワークフローに統合するために学習する必要が少なくなります。

Docker Swarm を使い始める方法

Docker Swarm を使い始めるのは簡単なプロセスです。以下に、主要なセットアップ手順の概要と、効果的な管理のためのいくつかのリソースを示します。

Docker Swarmのセットアップ

開始するには、次の手順に従ってください:

  1. 群れを初期化する:
    プライマリ ノードで次のコマンドを実行して、swarm を作成します。
    docker スウォーム初期化
  2. 群れにノードを追加します。
    ワーカーノードとしてノードを Swarm に追加します。
    docker swarm 参加 –トークン/ :2377
  3. クラスターを検証する
    クラスターを検証して適切なセットアップを確認します。
    ドッカーノードls

セットアップが完了したら、サービスの展開を開始できます。

  1. サービスを作成します。
    docker サービス作成 - 新しいサービス名 - レプリカ 3 nginx
  2. サービスを管理する:
    サービスをスケールし、詳細を検査する
    docker サービススケール new-service=5
    docker サービス 新しいサービスを検査する 
  3. サービスを更新します:
    ダウンタイムを回避するためにローリングアップデートを実行する
    docker サービス更新 —イメージ nginx:latest new-service

Docker Swarmの管理

Docker Swarm をセットアップしたら、すべてを管理し、稼働状態を維持するためのガイドラインが必要です。これらのヒントを使用して、Swarm クラスターを監視します。

  • 詳細を取得するには、inspect コマンドと ls コマンドを使用してノードの健全性を監視します。
  • ログを設定する Docker ログ ドライバーやその他のサードパーティ ソリューションなどのトラブルシューティング ツール用。
  • サードパーティの監視ツールを活用してクラスターの状態を監視し、リソースの割り当てが適切であり、パフォーマンスが維持されていることを確認します。
  • 障害に備えて、Swarm 構成を定期的にバックアップしてください。
  • 制約と配置設定を使用して、リソースを最適化するために特定のノードにタスクを割り当てます。次に例を示します。
    docker サービス作成 –constraint 'node.labels.type==high-memory' –name メモリ集約型サービス nginx

詳細については、Docker の公式リソースをご覧ください。

Docker Swarmを使い始める

Docker Swarm は、コンテナ オーケストレーションのためのシンプルで効率的なソリューションを提供するため、小規模から中規模のプロジェクトに最適です。Docker エコシステムに統合され、セキュリティが組み込まれており、負荷分散などの重要な機能を提供して、コンテナ化されたアプリケーションの信頼性の高い基盤を構築します。今すぐクラスターの構築を開始して、合理化されたコンテナ管理の利点をご確認ください。

コンテナの監視に役立つソリューションをお探しですか? コンテナモニタリング くわしくはこちらから

よくあるご質問

Docker Swarm は負荷分散をどのように処理しますか?

Docker Swarmは、サービス内のコンテナ間で受信トラフィックを自動的に分散します。これにより、リソースの使用が均等になり、手動設定なしでアプリケーションの応答性を維持できます。

Docker Swarm が Kubernetes よりも適しているのはどのような場合ですか?

Docker Swarmは、よりシンプルなセットアップと管理を求める小規模から中規模のプロジェクトやチームに最適です。Kubernetesの複雑さを避けながら、迅速なデプロイメントが必要な場合に最適です。

Docker Swarm はどのようにして高可用性を実現するのでしょうか?

Docker Swarmは、リーダー選出とタスクの再スケジュールによって可用性を維持します。マネージャーノードまたはワーカーノードに障害が発生した場合、自動的に新しいリーダーを昇格させるか、タスクを正常なノードに移動します。

Docker Swarm にはどのようなセキュリティ機能が組み込まれていますか?

Docker Swarmは、ノード間の安全な通信のためにデフォルトでTLS暗号化を使用します。また、クラスター内のアクセスを制御するためのロールベース認証もサポートしています。

Docker Swarm はダウンタイムなしでローリングアップデートを実行できますか?

はい。Docker Swarmはローリングアップデートをサポートしており、サービスを段階的にアップデートできます。問題が発生した場合は、以前のバージョンにロールバックしてアプリケーションの安定性を維持できます。

Docker Swarm では、複製されたサービスとグローバル サービスはどのように異なりますか?

複製されたサービスは、クラスター全体で一定数のコンテナインスタンスを実行します。グローバルサービスは、利用可能なノードごとに1つのコンテナインスタンスを実行します。これは、監視やログ記録などのタスクに役立ちます。

14日間フルアクセス LogicMonitor プラットフォーム