use nucleus::container::{Container, ContainerConfig};
use nucleus::error::Result;
use nucleus::isolation::NamespaceConfig;
use nucleus::resources::ResourceLimits;
fn main() -> Result<()> {
let limits = ResourceLimits::unlimited()
.with_memory("128M")? .with_cpu_cores(0.5)? .with_pids(50)?;
println!("Resource limits configured:");
println!(" Memory: {:?} bytes", limits.memory_bytes);
println!(
" CPU quota: {:?} µs / {:?} µs",
limits.cpu_quota_us, limits.cpu_period_us
);
println!(" PIDs: {:?}", limits.pids_max);
let config = ContainerConfig::try_new(
Some("limited-container".to_string()),
vec![
"/bin/sh".to_string(),
"-c".to_string(),
"echo 'Running with resource limits'; sleep 1".to_string(),
],
)?
.with_limits(limits)
.with_namespaces(NamespaceConfig::all());
println!("\nStarting container...");
let container = Container::new(config);
let exit_code = container.run()?;
println!("Container exited with code: {}", exit_code);
Ok(())
}