Docker:哪种方法更好? WARembedded在图像或基础图像+战争?

刚刚开始玩Docker。 在tomcat上部署一场战争似乎有两种方法:

  1. 用图像中embedded的java + tomcat + war创build图像
  2. 使用java + tomcat创build一个基本映像,然后将战争“注入”基本映像(例如,通过主机卷挂载)

方法1:

  • 需要为每个版本创build一个图像
  • 完全捆绑的解决scheme
  • 由于图像尺寸较大,为每个构build维护一个图像并共享下游部署的图像可能成为一个问题

方法2:

  • 在docker集线器中保留一个基础镜像
  • 外部添加战争并运行
  • 较小的可分配大小(仅限战争),但是部署团队需要“知道”要运行的映像名称的额外步骤

哪种方法通常用于生产?

如果您想要将代码部署到Docker业务stream程服务(如Google Container Engine,Amazon Container Service等)上,则选项1通常是唯一可行的解​​决scheme,因为您无权访问主机。 在Docker业务stream程系统中,选项1也更具可扩展性,因为您可以在各种泊坞窗主机上创build多个服务实例。

然而,我自己使用选项2的原因你已经提到,因为我pipe理缩放通过自动扩展组使用云形成,可以在本地商店提供我的战争实例。 现在我不认为dockerpipe理已经足够成熟,可以replace我的外部协调系统,如果我有这些系统设置,那么没有任何意义上的方法2的好处。然而,当亚马逊允许我们直接连接ELBdocker集装箱,并做了一些更多的改进,我会认真重新考虑。

由于图像尺寸较大,为每个构build维护一个图像并共享下游部署的图像可能成为一个问题

FYI Docker使用基于diff的文件系统,只要你只是改变战争文件,你的图像存储不应该成为一个问题。