3 个不稳定版本
0.2.0 | 2022年7月18日 |
---|---|
0.1.1 | 2022年5月26日 |
0.1.0 | 2022年5月26日 |
#801 in Unix API
52KB
1K SLoC
firec
firec
(发音为 "fyrek") 是与 Firecracker 交互的 Rust 客户端库。它允许您创建、操作、查询和停止 VMM。
示例
use std::path::Path;
use firec::{
Machine,
config::{Config, Drive, Jailer, Machine as MachineCfg, network::Interface}};
use tokio::time::{sleep, Duration};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let kernel_args = "console=ttyS0 reboot=k panic=1 pci=off random.trust_cpu=on";
let iface = Interface::new("eth0", "tap0");
let config = Config::builder(None, Path::new("debian-vmlinux"))
.jailer_cfg()
.chroot_base_dir(Path::new("/srv"))
.exec_file(Path::new("/usr/bin/firecracker"))
.build()
.kernel_args(kernel_args)
.machine_cfg()
.vcpu_count(2)
.mem_size_mib(1024)
.build()
.add_drive("root", Path::new("debian.ext4"))
.is_root_device(true)
.build()
.add_network_interface(iface)
.socket_path(Path::new("/tmp/firecracker.socket"))
.build();
let mut machine = Machine::create(config).await?;
machine.start().await?;
// Let the machine run for a bit before we KILL IT :)
sleep(Duration::from_secs(15)).await;
machine.force_shutdown().await?;
Ok(())
}
状态
当前正处于高度开发中,因此预计在一段时间内会有很多 API 破坏。
尽管如此,我们将遵循 Cargo 的 SemVer 规则,破坏性更改将以新的小版本发布。但是,我们只支持最新版本。
依赖项
~8–21MB
~247K SLoC