web-dev-qa-db-ja.com

Docker Swarms and Stacks:違いは何ですか?

Dockerの優れた Getting Started ガイドを読んだばかりで、先に進む前に、基本的なDockerの用語を理解していることを確認したかっただけです。これらの定義は、ドキュメントである程度提供されていますが、これらのドキュメントの多くは、次の概念に具体的な形式を与えることなく、例に基づいています。

そのため、私の理解は次のとおりです。

  • Services:Dockerサービスはアプリケーションのさまざまなコンポーネントです:フロントエンドはReact UI、バックエンドはSpring Boot Webサービスの場合、MySQL DBとRabbitMQブローカーがある可能性があります。これらはすべて異なるサービスであり、すべてアプリケーションを構成します。
  • クラスター:Dockerクラスターは、2つ以上のDockerホストにまたがるアプリケーションの1つ以上のサービスを管理するSwarmがある場合です。クラスターとは、サービスコンテナーが実行されているすべてのDockerホストを指すだけです。
  • Compose:Docker Composeは、サービス、スウォーム、スタックを管理するために使用されるツールです。
  • スタック:Dockerスタックは、Swarm Managerが複数のサービスに対して複数のSwarmを管理しているときに発生します、特定のクラスター上で、特定のアプリケーション用。したがって、SwarmとStackの違いは、Swarmは単純に単一のサービスに適用されるのに対し、Stackは複数のSwarmを管理するため、すべてがスケーラブルで分散されたアプリケーションを構成する複数のサービスを管理することです。

だから私は尋ねます:私はこれらの基本的な用語の私の理解において正しいですか、それとも私は何らかの方法で誤解されていますか?

17
smeeb

サービス:Dockerサービスはアプリケーションのさまざまなコンポーネントです...

サービスは、DockerSwarmが管理するイメージです。このイメージの3つのインスタンスを実行するように要求すると、docker swarmが実行します(可能な場合)。

Docker Hub は、実行できるさまざまなイメージをすべて表示します。

クラスター:Dockerクラスターは、2つ以上のDockerホストにまたがるアプリケーションの1つ以上のサービスを管理するSwarmがある場合です。クラスターは、サービスコンテナーが実行されているすべてのDockerホストを指すだけです。

ええクラスターは、ワーカー(サービスを実行する)またはマネージャー(ノード全体のサービスのスケジューリングを制御する)のいずれかであるノードで構成されます。ノードはワーカーとマネージャーの両方になることができることに注意してください。

私はまだマネージャーに頭を悩ませていますが、少なくとも3の奇数を目指すべきだと思います。そうしないと、マネージャーがいなくなった場合に問題が発生する可能性があります。

作成:Docker Composeは、サービス、スウォーム、スタックを管理するために使用されるツールです。

Docker composeは、イメージを組み合わせて動作するアプリケーションにするために使用されます。たとえば、フロントエンドプロキシ、Webサイト、バックエンドデータベースが含まれる場合があります。このテクノロジーは、特にDockerスウォームとは何の関係もありません...スウォーム全体にアプリケーションをデプロイするために使用できることを除いて( https://codefresh.io/blog/deploy-docker-compose-v3-swarm- mode-cluster /

スタック:Dockerスタックは、SwarmManagerが複数を管理しているときに発生します...

スタックはDockerクラウドに使用されます。これはおそらくあなたが探しているものではありません:)

2
Ross Dargan

Docker swarmは、クラスタリングおよびオーケストレーションツールです。これは、複数のノードにまたがるコンテナーのスケジューリングに使用されます。複数のノードをクラスターとして組み合わせてから、このクラスターに「dockerrun」コマンドを送信できます。

Dockerスタックは、特定の環境でアプリケーションを構成するサービスのコレクションです。スタックファイルの拡張子はyamlです(ymlも)。

2
Virendra Jadeja