私は docker にまったく慣れていないので、アプリケーションの配布について助けが必要です。
このことを考慮:
物理マシンのプールがあり、それぞれが最新バージョンの docker を実行しています。
私の「アプリケーション A」にはいくつかのコンテナーがあります。この定義を明確にするために、アプリケーションはコンテナ、4 つのメッセージング コンテナ、およびマスター コンテナで実行されるデータベースになります。6 つのコンテナすべてが相互に通信する必要があります。データベース、メッセージング、およびその他のコンテナーが「サービス」になります。
また、「アプリケーション A」とはサイズと構成が少し異なる「アプリケーション B」、「アプリケーション C」、「アプリケーション N...」も作成できます。アプリケーションは相互に通信せず、完全に独立しています。
要件:
- すべてのアプリケーション「A、B、C..N」は、物理マシンの同じプールを使用する必要があります。
- 必要に応じて、各アプリケーションの各サービスを異なる物理マシンで実行する必要があります。
- 各サービスを各物理マシンに割り当てる方法を制限したい場合があります
- 「その場で」アプリケーションを作成する必要がある
私が最初に考えたのは、docker-compose を使用してアプリケーションを定義し、いくつかの dockerfile を使用してその中のサービスを定義することです。しかし、そうすると、各アプリケーションは同じ Docker エンジンで実行されるため、同じ物理マシンで実行されます。
docker compose を docker swarm にデプロイできることを読みました。この場合、docker swarm は docker エンジンとして機能します。ただし、それを行う方法の例を見つけることができず、制限についてもわかりません。
2 番目に考えたのは、swarm モードを使用することです。スウォームを作成し、その上でサービスを実行します。しかし、私は「アプリケーション」の概念を失います。スウォームには多数のサービスが投入され、それぞれがどのように相互に通信するかを管理できませんでした。
したがって、この問題を考えると:
- 私が間違った仮定や声明はありますか?
- シナリオで推奨される docker ツールの使用法は何ですか?