docker工人:每个服务一个共享的图像或单独的图像?

我想找出最有效的方法(内存和空间)来运行复杂的依赖关系的多个服务。

假设我们有一个包含3个服务的项目:

  • 服务S1仅使用库A和B.
  • 服务S2仅使用库B和C
  • 服务S3仅使用库A和C

所以,如果你为每个图像创build一个单独的图像,你将会得到这个结构:

  • S1
    • 高山层
    • A和B库
  • S2
    • 高山层
    • B和C库
  • S3
    • 高山层
    • A和C库

库层不共享任何文件(虽然实际上共享库)。

分享资源的最佳策略是什么? 所有3种服务都可以使用一个图像吗? (将库A,B,C存储在一个图像层中)

UPD
我们在一台机器上运行所有的服务,而不是在一个集群上运行
更新2
这里是一个例子 (扰stream板:图层不共享)

如果您正在遵循面向服务的体系结构,那么每个服务都应该有自己的映像。 Docker镜像很便宜,但是如果你有一个庞大的镜像并且在所有的服务中使用这个镜像的话,那就不太理想了。

另外,如果你想升级服务特定的库,那么你不会有其他服务的依赖。