现已全面推出.NET Chiselled Ubuntu容器镜像

.NET Chiselled Ubuntu 容器镜像正式发布

2023年11月底,.NET Chiselled Ubuntu 容器镜像正式发布并达到生产可用状态。微软宣布,这些镜像适用于 .NET 6、7 和 8 版本,并强调这些镜像是 Canonical 和微软长期合作与设计协作的成果。

镜像特点

.NET Chiselled Ubuntu 镜像是一种无发行版(distroless)容器镜像,仅包含 .NET 运行所需的必要组件,移除了其他所有内容。与基于完整 Ubuntu 基础镜像的完整版镜像相比,Chiselled 镜像具有更小的部署体积和更小的攻击面。这一优势是通过仅专注于 .NET 框架所需的必要组件实现的。

这些镜像以标签 8.0-jammy-chiseled 标识,现已在容器仓库中提供。需要注意的是,.NET 6 和 7 的 Chiselled 镜像仅在版本号上有所不同,且所有镜像均基于 Ubuntu 22.04(Jammy Jellyfish),这可以通过标签中的 jammy 识别。

优化与优势

.NET Chiselled 容器旨在通过简化容器镜像来优化云应用程序的部署,专注于必要的组件以提升镜像大小和安全性。据报道,Chiselled 镜像相比标准 Ubuntu 镜像减少了超过 100MB(未压缩)的体积,与以小巧著称的 Alpine 镜像相当。

这些镜像是兼容 glibc 的最小发布版本,通过极简的组件构成减少了暴露于常见漏洞和暴露(CVE)的风险。由于 Ubuntu 是开发环境中的热门选择,Chiselled 镜像也成为开发与生产环境对齐的选项。此外,Chiselled 镜像在各种镜像变体中提供了最全面的支持。

安全性

从安全角度来看,Chiselled 镜像由于没有 shell 和包管理器,限制了潜在攻击者的行动。移除的组件如 curlwget 进一步增强了安全性,防止了从受控服务器下载并执行脚本的常见攻击手段。此外,原生提前编译(AOT)技术将镜像大小降至 10MB 以下,特别适合控制台应用和服务。

部署选择

选择部署方式时存在权衡。框架依赖部署最大化层共享,便于在注册表和单台机器上托管多个 .NET 应用时共享 .NET 副本。而自包含应用在体积和注册表拉取效率上表现更优,但共享能力有限,仅能共享运行时依赖。

镜像发布的意义

Chiselled 镜像的发布标志着容器镜像组合的重要演进,其意义与几年前对 Alpine 的支持相当。用户被建议密切关注这一变革性变化。值得注意的是,发布的 Chiselled 镜像与 Alpine 类似,未包含 ICU 或 tzdata,除非选择额外镜像。

开发者建议

使用 .NET 8 的开发者被鼓励尝试 Chiselled 容器,因为它们提供了显著的优势且过渡相对简单,只需使用不同的镜像标签。开发者可以在 GitHub 讨论中了解更多关于额外镜像的信息。

未来展望

Richard Lander 在发布博客中强调了与 Canonical 的紧密合作,以及 Chiselled 镜像最初面向 .NET 用户的可用性,并期待更广泛的采用。他鼓励 Java、Python 和 Node.js 等开发者生态系统考虑提供类似的 Chiselled 镜像,并表示:

我们在 .NET Conf 演讲后收到了关于 Chiselled 镜像的咨询请求。或许一年后,Chiselled 镜像将成为许多开发者的常见选择。随着时间的推移,我们看到了客户在操作管理容器时面临的挑战,主要与 CVE 负担有关。我们相信 Chiselled 镜像是帮助团队降低成本并更自信地部署应用的绝佳解决方案。

如需了解更多信息,读者可以查阅 Canonical微软 的官方发布博客文章。

阅读 67
0 条评论