Kubernetes / Docker应用程序依赖模式

时间:2019-02-28 15:22:41

标签: docker kubernetes

我的项目有一个应用程序服务器和一个C ++库。该库不依赖于应用程序服务器。供应商具有用于应用程序服务器的Docker映像。我需要部署一个C ++库,该库需要可以从每个应用程序服务器节点/荚访问。

我编写了一个基于供应商映像的Dockerfile,将库编译并复制到位。它可以工作,但是,每当有新版本的应用程序服务器时,我都需要从头开始重新构建C ++库。鉴于缺乏依赖性,这些似乎并不是最佳选择。

天真地,我期望能够将C ++库构建为“空”映像并将其(像文件系统一样)安装在每个pod中。这样,服务器和库就可以分别维护。

在供应商Dockerfile上构建该架构的“正确”方法吗?还是有一种更像我的“理想化”愿景的解决方案?

我希望答案是显而易见的,我只需要正确的术语来搜索...非常感谢您的指针。

2 个答案:

答案 0 :(得分:1)

使用Kubernetes至少有两个选项可以与容器映像分开管理库:

  1. Init containers。如果将库放在外部资源中,则可以使用----------------------------- | ID | Title | parent-cat_id| ----------------------------- | 1 | Main | Child | | 2 | Child | null | ----------------------------- download并将其放在应用程序服务器的pod文件系统中。
  2. Volumes。您还可以将库放到网络存储中,并以卷ReadOnlyMany的形式将其附加到应用程序服务器容器。

答案 1 :(得分:1)

正如您所说,您可以将C ++库构建为一个“空”映像。对于所有部署,您都可以将其用作基础映像。这样,您可以避免为每个部署构建库。

Ex:使用C ++库构建映像。让我们称之为lib-img。 当供应商正在构建映像时,供应商可以使用lib-img作为基础映像,也可以向供应商所需的lib-img添加其他依赖项。

您还可以使用init容器将库拉到Pod上。