我们的使命是使容器和函数工作负载能够以安全、多租户、最小开销的方式执行。
点击此处阅读更多关于 Firecracker 章程的内容。
Firecracker 是一种开源虚拟化技术,专为创建和管理安全的、多租户的容器及基于函数的服务而构建,这些服务提供无服务器运营模式。Firecracker 在称为 microVM 的轻量级虚拟机中运行工作负载,这些虚拟机将硬件虚拟化技术提供的安全性和隔离特性与容器的速度和灵活性相结合。
Firecracker 的主要组件是一个虚拟机监视器(VMM),它使用 Linux 内核虚拟机(KVM)来创建和运行 microVM。Firecracker 采用极简设计。它排除了不必要的设备和面向客户机的功能,以减少每个 microVM 的内存占用和攻击面。这提高了安全性、缩短了启动时间,并提高了硬件利用率。Firecracker 也已集成到容器运行时中,例如 Kata Containers 和 Flintlock。
Firecracker 由 Amazon Web Services 开发,旨在提升 AWS Lambda 和 AWS Fargate 等服务的速度和效率。Firecracker 在 Apache 2.0 版 许可下开源。
要了解更多关于 Firecracker 的信息,请查看 firecracker-microvm.io。
要开始使用 Firecracker,请下载最新的发布二进制文件,或从源代码构建。
您可以在任何安装了 Docker(我们使用开发容器)和 bash 的 Unix/Linux 系统上构建 Firecracker,如下所示:
git clone https://github.com/firecracker-microvm/firecracker
cd firecracker
tools/devtool build
toolchain="$(uname -m)-unknown-linux-musl"
Firecracker 二进制文件将位于 build/cargo_target/${toolchain}/debug/firecracker。有关构建、测试和运行 Firecracker 的更多信息,请参阅快速入门指南。
Firecracker microVM 的整体安全性,包括满足安全多租户计算标准的能力,取决于配置良好的 Linux 宿主操作系统。我们相信符合这一标准的配置已包含在生产主机配置文档中。
Firecracker 已经在 AWS 中运行生产工作负载,但在我们使命所指引的旅程中,这仍然是第一天。还有很多东西要构建,我们欢迎所有贡献。
要为 Firecracker 做出贡献,请查看入门指南中的开发环境搭建部分,以及 Firecracker 的贡献指南。
Firecracker 的新版本通常每两到三个月通过 GitHub 仓库的发布页面发布。变更历史记录在我们的更新日志中。
Firecracker 的版本发布政策详见此处。
Firecracker 的整体架构在设计文档中描述。
Firecracker 由单个微型虚拟机管理器(micro Virtual Machine Manager)进程组成,该进程启动后即向宿主机暴露一个 API 端点。该 API 以 OpenAPI 格式定义。更多信息请阅读 API 文档。
API 端点可用于:
[BETA] 配置面向客户机的元数据服务的数据树。仅当配置了此资源时,该服务才对客户机可用。[Developer Preview] 在 VM 运行时热插拔与热移除 virtio PCI 设备。内置功能:
我们测试以下所有组合:
*:我们仅支持使用 6.1 或 6.18 宿主内核的 AWS EC2 第 8 代 Intel(*8i)实例。这是因为 5.10 内核对于 Granite Rapids CPU 的支持不佳。
pl031 RTC 设备不支持中断,因此使用 RTC 闹钟(例如 hwclock)的客户机程序将无法正常工作。Firecracker 的性能特性作为规范文档的一部分列出。所有规范都是我们致力于在无服务器运营模式中支持容器和函数工作负载的承诺的一部分,因此会通过持续集成测试强制实施。
Firecracker 的安全是我们的首要任务。如果您怀疑自己发现了漏洞,请按照我们的安全政策文档中概述的方式私下与我们联系;我们将立即优先处理您的披露。
常见问题收集在我们的 FAQ 文档 中。
您可以通过以下方式与 Firecracker 社区取得联系:
在 Firecracker 社区中交流时,请遵守我们的行为准则。
| 实例 | 宿主操作系统与内核 | 客户机根文件系统 | 客户机内核 |
|---|
| m5n.metal (Intel Cascade Lake) | al2 linux_5.10 | ubuntu 24.04 | linux_5.10 |
| m6i.metal (Intel Ice Lake) | al2023 linux_6.1 | linux_6.1 | |
| al2023 linux_6.18 | |||
| m7i.metal-24xl (Intel Sapphire Rapids) | |||
| m7i.metal-48xl (Intel Sapphire Rapids) | |||
| m8i.metal-48xl (Intel Granite Rapids)* | |||
| m8i.metal-96xl (Intel Granite Rapids)* | |||
| m6a.metal (AMD Milan) | |||
| m7a.metal-48xl (AMD Genoa) | |||
| m6g.metal (Graviton 2) | |||
| m7g.metal (Graviton 3) | |||
| m8g.metal-24xl (Graviton 4) | |||
| m8g.metal-48xl (Graviton 4) |