0

複雑な依存関係を持つ複数の サービスを実行するための最も効率的な方法(メモリとスペース)を把握したいと考えています。Docker:サービスごとに1つの共有イメージまたは個別イメージ?

と仮定、我々は3つのサービスでプロジェクトを持っている:

  • サービスS1はライブラリのみを使用してAとB
  • サービスS2のみのライブラリB及びC
  • を使用するサービスS3は、ライブラリのみAとCを使用しています

あなたはこれらのそれぞれに別々の画像を作成するのであれば、あなたはこのような構造になってしまいます。

  • S1
    • 高山層
    • A及びBライブラリ
  • S2
    • 高山層
    • B及びCライブラリ
  • S3 の
    • 高山層
    • AとCライブラリ

図書館の層は任意のファイルを共有していない(実際には共有ライブラリが)。

リソースを共有するための最良の戦略は何ですか? 3つのサービスすべてに1つのイメージを使用することはできますか? (1つの画像層に保管ライブラリA、B、C)

UPD
我々はUPD 2
はここ
つのマシン上ではなく、クラスター上のすべてのサービスを実行するには、example(スポイラーです。レイヤーは共有されません)

答えて

0

マルチサービス指向アーキテクチャーに従っている場合、各サービスには独自のイメージが必要です。ドッカーの画像は安いですが、1つのかさばる画像があり、それをすべてのサービスで使用すると、それは理想的ではありません。

また、サービス固有のライブラリをアップグレードする場合は、他のサービスとの依存関係もありません。

+0

私は建築スタイルではなく、効率性について話しています。 「理想的でない」とはどういう意味ですか?私は、Dockerのイメージはできるだけ小さくすべきだと理解していますが、ここではできるだけスペースとメモリを使いたいと思っています。 もちろん、サービスをクラスタ上で実行すると効率的ではありません。使用しないレイヤのコピーを格納する必要があるためです。 – grihabor

関連する問題