这是关于docker dev邮件列表的讨论摘要。
几乎所有程序都依赖于第三方库。最常见的是,它们使用动态链接和某种包依赖关系,因此当多个程序需要同一个库时,它只安装一次。
然而,有些程序将它们的第三方库捆绑在一起,因为它们依赖于这些库的特定版本。
在创建Docker镜像时,是使用捆绑的库更好,还是应该构建这些程序,让它们使用默认的系统库?
系统库的关键点不是节省磁盘或内存空间。这关乎安全。所有主要的发行版都通过拥有专门的安全团队、密切跟踪已发布的漏洞并自行披露建议来认真处理安全问题。然而,上游开发人员并不总是实现类似的做法。
在设置Docker镜像从源代码编译程序之前,如果您想使用捆绑库,您应该检查上游作者是否提供了一种方便的方式来宣布安全漏洞,以及他们是否及时更新了捆绑库。如果他们不这样做,你就暴露了自己的安全漏洞。
同样,在使用其他人构建的包之前,您应该检查提供这些包的通道是否实现了类似的安全最佳实践。下载并安装“all-in-one” .deb或.rpm一开始听起来很棒,除非你无法确定它包含易受Heartbleed漏洞攻击的OpenSSL库的副本。