我正在从安全 Angular 研究容器之间的共享库。
在许多安全资源中,讨论了共享库方案,其中讨论了容器共享依赖项引用(即同一文件)的情况,我可以提出两种方案:
尽管进行了讨论,但在现实世界中我还是找不到这种行为,所以问题是:这种方法有多普遍?
引用使用此技术的官方已知图像将非常有用!
最佳答案
通常根本不认为这是最佳做法。单个Docker镜像旨在实现自包含,并包含其需要运行的所有应用程序代码和库。除了一些问题之外,我从未遇到过建议使用卷将各种代码注入(inject)容器的Docker镜像。
(一个异常(exception)是node
图像;关于node_modules
目录使用一个匿名卷经常有这样的问题[TL; DR:package.json
中的更改永远不会更新该卷],但是即使如此,这仍在尝试避免与其他上下文共享库树。 )
一种有用的技术是构建一个包含一些库的中间基础镜像,然后在此基础上构建一个应用程序。从机械的 Angular 来看,对于特定版本的ubuntu:18.04
图像,我认为基于该图像的所有其他图像都使用物理上相同的libc.so.6
,但是从Docker的 Angular 来看,这是一个实现细节。