0

我想找出最有效的方式(内存和空间)来运行复杂的依赖关系的多个 服务。Docker:每个服务都有一个共享映像或单独映像?

假设,我们有3个服务项目:

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

因此,如果您为每个这些单独的图像,你最终会采用这种结构:

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

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

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

UPD
我们一台机器上运行的所有服务,而不是一个群集上
UPD 2
下面是一个example(扰流板:图层不共享)

回答

0

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

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

+0

我说的是效率,而不是建筑风格。 “不理想”是什么意思?我明白,Docker映像应尽可能小,但在这里我想尽可能少地使用空间和内存。 当然,如果我们在集群上运行我们的服务,效率不高,因为我们必须存储我们甚至不使用的图层副本。 – grihabor