互联网技术 / 互联网资讯 · 2024年4月8日 0

使用系统库还是捆绑库:Docker构建映像的选择

关于docker dev邮件列表的讨论摘要。

几乎所有程序都依赖于第三方库。最常见的是,它们使用动态链接和某种包依赖关系,因此当多个程序需要同一个库时,它只安装一次。

然而,有些程序将它们的第三方库捆绑在一起,因为它们依赖于这些库的特定版本。

在创建Docker镜像时,是使用捆绑的库更好,还是应该构建这些程序,让它们使用默认的系统库?

系统库的关键点不是节省磁盘或内存空间。这关乎安全。所有主要的发行版都通过拥有专门的安全团队、密切跟踪已发布的漏洞并自行披露建议来认真处理安全问题。然而,上游开发人员并不总是实现类似的做法。

在设置Docker镜像从源代码编译程序之前,如果您想使用捆绑库,您应该检查上游作者是否提供了一种方便的方式来宣布安全漏洞,以及他们是否及时更新了捆绑库。如果他们不这样做,你就暴露了自己(以及你的图像用户)的安全漏洞。

同样,在使用其他人构建的包之前,您应该检查提供这些包的通道是否实现了类似的安全最佳实践。下载并安装.deb或.RpM一开始听起来很棒,除非你无法确定它包含易受Heartbleed漏洞攻击的OpenSSL库的副本。