10月21日,杭州云栖大会-技术&可持续发展论坛,注册有礼 了解详情
写点什么

如何选取 Linux 容器镜像

2017 年 10 月 29 日

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

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

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

第二个原则是容器中的安全漏洞问题。该问题已成为很多报告的主题。根据一份最新的研究,Docker Hub 上的公开Debian 容器镜像所具有的漏洞最少,而Ubuntu 镜像的漏洞最多。该研究仅涉及了哪些公开的Docker 镜像。一些工具也提供了不同程度的防护和功能,例如 Clair vuls 这样的开源工具,以及 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

2017 年 10 月 29 日 19:001686
用户头像

发布了 381 篇内容, 共 100.4 次阅读, 收获喜欢 232 次。

关注

评论

发布
暂无评论
发现更多内容

总结近期BATJ大厂Java岗高频面试题,提问率高达98%

Crud的程序员

Java 编程 程序员 架构

刷完这两份pdf轻松拿下了蚂蚁金服、头条、小米等大厂的offer

程序员改bug

Java spring 架构 编程语言

web messaging与Woker分类:漫谈postMessage跨线程跨页面通信

zhoulujun

Service Worker

数字科技这类人才是银行急需的

CECBC区块链专委会

网络安全2021年为什么如此吃香?事实原来是这样....

网络安全学海

运维 网络安全 信息安全 渗透测试 漏洞分析

《持之以恒的从事运动》一

Changing Lin

微信业务架构图和“学生管理系统”毕业架构设计

NewBranSTONE

#架构实战营

完美收官!字节4面斩下2-2Offer,入职就是30K16薪,全凭这套“面试+架构进阶知识点”pdf

云流

Java 程序员 架构 面试

EF Core 数据验证

喵叔

7月日更

Git点赞82K!阿里量产的保姆级Spring Security笔记,一眼望穿干货满满!

云流

Java 编程 架构 面试

妇与术(一):女性体育报道,技术or花瓶?

脑极体

三面遭SpringCloudAlibaba暴锤,含恨吃透大佬的手抄本笔记(听说Github都没有),终入阿里

云流

Java 编程 架构 面试 微服务

Redisson 分布式锁源码 02:看门狗

程序员小航

Java redis 源码 分布式锁 redisson

MySQL开篇

卢卡多多

架构· MySQL 数据库 7月日更

公开吧!腾讯技术专家手撸“Redis技术笔记”,下载量已突破30W

云流

redis 编程 架构 面试

ServiceWorker工作机制与生命周期:资源缓存与协作通信处理

zhoulujun

Service Worker

王者荣耀异地多活架构设计

Lane

慕了没?3年经验,3轮技术面+1轮HR面,拿下字节30k*16薪offer

Java架构师迁哥

分布式认知工业互联网赋能工业企业数字化转型

CECBC区块链专委会

推荐系统产品概述(二十五)

数据与智能

算法 推荐系统 流量

【LeetCode】根据字符出现频率排序Java题解

HQ数字卡

算法 LeetCode 7月日更

Token Pocket钱包DAPP系统开发

橙子区块链l53o56oloo3

区块链 dapp DAPP系统开发 token pocket

一站到底!Spring Cloud Alibaba第三版耀世升级全彩PDF版

Java架构师迁哥

Kong-如何查看 Kong 插件的版本

耳东@Erdong

kong 7月日更 kong-plugin

不懂Java SPI机制,怎么进大厂

慕枫技术笔记

Java 后端 spi

第七章作业

方堃

Hive解析Json数组超全讲解

五分钟学大数据

hive 7月日更

进阿里真的这么难?P8大佬告诉你,你和阿里之间缺的只是这份笔记

Crud的程序员

Java spring 编程 架构

IPFS矿机怎么挖矿IPFS矿机工作原理

北鲲云探索云计算在生命科学领域更多的应用场景

北鲲云

Go 学习笔记之 赋值

架构精进之路

Go 7月日更

数据cool谈(第1期)数据库寻路,开源有态度

数据cool谈(第1期)数据库寻路,开源有态度

如何选取Linux容器镜像-InfoQ