2

私は 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 ツールの使用法は何ですか?
4

1 に答える 1

3

Docker Swarm Mode (Docker 1.12) で Docker Compose を使用することは可能ですが、現時点では完全な互換性はありません。Docker スタックとバンドル をご覧ください。

Docker の次のバージョン (1.13) には、Docker Compose を使用しない Docker と互換性のある Docker Compose v3 の新しいリリースもあります。これにより、Docker Compose ファイルを次のようにデプロイできるようになります: docker deploy --compose-file docker-compose.yml AppA

これは現在実験段階ですが、Docker 1-13-rc5 で問題なく動作します。( Docker リリース)

この詳細については、この記事を参照してください。

それらをすべて異なるホストで実行するという要件については、docker サービスの作成 (または Docker Compose v3) で制約を定義することで可能です ( Docker サービスの作成 - 制約を参照)。しかし、なぜそれらを異なるホストで実行する必要があるのでしょうか?

--limit-cpu と --limit-memory を使用して、各サービスが使用できる CPU とメモリの使用量を制限することができます。

Docker Swarm Mode で遊びたい場合は、ローカル ホストで Docker Machine を使用して swarm を作成できます。(古い Docker Swarm は使用しないでください)

于 2017-01-13T09:15:09.630 に答える