NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

如何选取 Linux 容器镜像

  • 2017-10-29
  • 本文字数:1104 字

    阅读完需:约 4 分钟

一份如何选取 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:001998
用户头像

发布了 391 篇内容, 共 127.0 次阅读, 收获喜欢 256 次。

关注

评论

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

如何自学编程?

DaemonStone

程序员 程序员人生 自学编程 经验总结 大学生毕业

一个cpp协程库的前世今生(二十一)协程重分配

SkyFire

c++ cocpp

架构实战营 模块五作业

Jude

架构实战营

最新版:Apache Pulsar 针对 Log4j 漏洞解决方案

Apache Pulsar

开源 架构 云原生 中间件 Apache Pulsar

ReactNative进阶(二十五):ScrollView 滚动视图组件详解

No Silver Bullet

React Native ScrollView 1月月更

面试突击17:HashMap除了死循环还有什么问题?

王磊

19 Prometheus之告警的艺术

穿过生命散发芬芳

Prometheus 1月月更

【重构前端知识体系之HTML】讲讲对HTML5的一大特性——语义化的理解

归子莫

html html5 前端 语义化 1月月更

模块五

浮生若梦

阿里云开源业内首个应用多活项目 AppActive,与社区共建云原生容灾标准

阿里巴巴云原生

阿里云 开源 高可用 云原生 容灾

让创新触手可及,阿里云容器服务 ACK 发行版开放免费下载

阿里巴巴云原生

阿里云 云原生 容器服务 ACK

黑客实现ARP欺骗

喀拉峻

黑客 网络安全 WEB安全

架构实战营:模块三作业

Poplar

「架构实战营」

微博评论的高性能高可用计算架构设计

皓月

「架构实战营」

架构训练营模块五作业

沈益飞

架构训练营 架构师训练营 4 期

InnoDB 引擎了解(双写机制)

Ayue、

MySQL 数据库 1月月更

30人的产研团队如何高效协同?

阿里云云效

阿里云 DevOps 云原生 研发管理 研发团队

外网打点,内网渗透

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

Spring 都在用的技术,你确定不过来看看?2️⃣

XiaoLin_Java

1月月更

Serverless,引领云计算下一个阶段

华为云开发者联盟

MySQL 云计算 Serverless 华为云 FunctionGraph

潘娟:从女工程师转变成开源商业化Infra公司创始人,痛并快乐着

腾源会

数据库 开源 Apache ShardingSphere 开源商业化

Jenkins Pipeline: 并发执行

夏兮。

jenkins pipeline jenkins高级用法 parallel

使用 VSCode 调试 Electron 主进程代码

编程三昧

Electron 1月月更

SpringBoot 实战:加载和读取资源文件

看山

classpath SpringBoot 2 1月月更

基于Javaweb,Mysql图书管理系统

叫练

算法大佬Carl的面试简历长啥样?同款模板让你脱胎换骨!

博文视点Broadview

【架构师训练营】模块五作业

樰巳-堕~Horry

架构实战营 「架构实战营」

Apache Pulsar 针对 Log4j2 漏洞 (CVE-2021-44228) 的解决方案

Apache Pulsar

开源 云原生 中间件 Apache Pulsar log4j2

Spring中的单例模式使用

JavaEdge

1月月更

如何真正学习Go 语言[翻译]

宇宙之一粟

Go 学习方法 Go 语言 1月月更

「架构实战营」模块五《如何设计业务高性能高可用计算架构》作业

DaiChen

作业 模块五 「架构实战营」

如何选取Linux容器镜像_Linux_Hrishikesh Barua_InfoQ精选文章