我正在从安全 Angular 研究容器之间的共享库。

在许多安全资源中,讨论了共享库方案,其中讨论了容器共享依赖项引用(即同一文件)的情况,我可以提出两种方案:

  • 实际讨论的场景-从主机将某些lib目录安装到容器
  • 发明的场景-为不同的容器(不同的服务,相同容器的复制集或两者)创建共享卷,并使用在所有容器之间共享的库填充该卷。

  • 尽管进行了讨论,但在现实世界中我还是找不到这种行为,所以问题是:这种方法有多普遍?

    引用使用此技术的官方已知图像将非常有用!

    最佳答案

    通常根本不认为这是最佳做法。单个Docker镜像旨在实现自包含,并包含其需要运行的所有应用程序代码和库。除了一些问题之外,我从未遇到过建议使用卷将各种代码注入(inject)容器的Docker镜像。

    (一个异常(exception)是node图像;关于node_modules目录使用一个匿名卷经常有这样的问题[TL; DR:package.json中的更改永远不会更新该卷],但是即使如此,这仍在尝试避免与其他上下文共享库树。 )

    一种有用的技术是构建一个包含一些库的中间基础镜像,然后在此基础上构建一个应用程序。从机械的 Angular 来看,对于特定版本的ubuntu:18.04图像,我认为基于该图像的所有其他图像都使用物理上相同的libc.so.6,但是从Docker的 Angular 来看,这是一个实现细节。

    10-04 21:52
    查看更多