
用于无服务器计算的安全、快速的微型虚拟机。
我们的使命是支持安全、多租户、极低开销的容器与函数工作负载执行。
更多关于 Firecracker 宪章的内容,请参阅此处。
Firecracker 是一种开源虚拟化技术,专为创建和管理安全、多租户的容器及函数式服务而设计,这些服务提供无服务器(serverless)运营模式。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 由一个单一的微虚拟机监视器进程组成,该进程在启动后向宿主机暴露一个 API 端点。该 API 以 OpenAPI 格式规范 定义。更多信息请参阅 API 文档。
API 端点 可用于:
[BETA] 配置面向客户机的元数据服务的数据树。仅当配置了此资源时,该服务才对客户机可用。[开发者预览] 在虚拟机运行期间热插拔和热拔插 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) | |||
| m9g.metal-48xl (Graviton 5) |