複雑な依存関係を持つ複数の サービスを実行するための最も効率的な方法(メモリとスペース)を把握したいと考えています。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(スポイラーです。レイヤーは共有されません)
私は建築スタイルではなく、効率性について話しています。 「理想的でない」とはどういう意味ですか?私は、Dockerのイメージはできるだけ小さくすべきだと理解していますが、ここではできるだけスペースとメモリを使いたいと思っています。 もちろん、サービスをクラスタ上で実行すると効率的ではありません。使用しないレイヤのコピーを格納する必要があるためです。 – grihabor