BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

如何选取Linux容器镜像

| 作者 Hrishikesh Barua 关注 14 他的粉丝 ,译者 盖磊 关注 2 他的粉丝 发布于 2017年10月30日. 估计阅读时间: 3 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

一份如何选取Linux容器镜像的对比报告阐述了镜像选取中的一些最佳实践。报告中涉及了架构、安全和性能等因素,此外,商业用户还需要考虑厂商的支持情况。

Linux容器提供了对内核空间和用户空间组件的独立管理,这是是通过使用cgroups命名空间(Namespace)等资源及进程隔离机制实现的。虽然Solaris和BSD也提供了与Linux容器技术类似的抽象机制,但此份对比报告只聚焦于Linux容器技术。运行容器的主机提供了运行容器所需的操作系统内核和一系列工具。另一方面,容器镜像提供了运行分布在容器间的应用所需的软件库、解释器和应用代码。所有这些都依赖于底层系统库。对于解释性语言也同样适用,因为解释器本身也是使用底层语言编写的。

第一个原则是容器镜像的大小。各容器镜像在磁盘上的大小不等,从Fedora这样的230MB大小,到Alpine Linux这样的4MB大小。但是在选取一个镜像发布版时,镜像的大小并非唯一应该考虑的问题。镜像的主要分组包括Debian/Ubuntu、RHEL、Centos、Fedora和Alpine。

第二个原则是容器中的安全漏洞问题。该问题已成为很多报告的主题。根据一份最新的研究,Docker Hub上的公开Debian容器镜像所具有的漏洞最少,而Ubuntu镜像的漏洞最多。该研究仅涉及了哪些公开的Docker镜像。一些工具也提供了不同程度的防护和功能,例如Clairvuls这样的开源工具,以及Twistlock等这类商业工具。很多软件厂商已实现对发布版及Web服务器和数据库这样的通用软件中的未知漏洞的自动测试。一些开源工作也致力于减缓或最小化容器漏洞,两者都会对主机和容器间的相互通信产生影响(参见该幻灯片的第7-9页)。

第三个原则是镜像中的软件包情况。glibc等核心库和软件包格式会对容器的安全和性能产生影响。一些成熟的软件库,例如glibc和gcc,具有很大规模的用户社区,并已经被稳健地使用多年。这也是容器镜像使用这些软件库的首要原因。但是Alpine等一些发布版坚持另辟蹊径,这已经导致了一些问题

除了上述三个原则,企业用户还需要考虑镜像的生命周期和产品支持因素。RHEL和Ubuntu给出了一些商业支持选项,它们通过论坛对各种用户提供社区支持。Ubuntu和RHEL引领了生命周期范围的管理,即一个发布版本得到支持的时间范围,在此期间将提供软件缺陷修复、补丁与特性的向后移植(Backporting)及支持。

报告给出的结论是,容器镜像的选择类似于选择Linux发布版。为此,Google的“Distroless”镜像给出了一种非常有意思的拆分方式。Distroless仅是一个提供各种应用及其运行时依赖的镜像,并不包含哪些在任一Linux发布版中通常都会包含的程序,例如Shell和软件包管理等。

查看英文原文: How to Choose a Linux Container Image

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT