Skip to content

urunc: A Lightweight Container Runtime for Unikernels

The main goal of urunc is to bridge the gap between traditional unikernels and containerized environments, enabling seamless integration with cloud-native architectures. Designed to fully leverage the container semantics and benefits from the OCI tools and methodology, urunc aims to become “runc for unikernels”, while offering compatibility with the Container Runtime Interface (CRI). Unikernels are packaged inside OCI-compatible images and urunc launches the unikernel on top of the underlying Virtual Machine or seccomp monitors. Thus, developers and administrators can package, deliver, deploy and manage unikernels using familiar cloud-native practises.

For the above purpose urunc acts as any other OCI runtime. The main difference of urunc with other container runtimes is that instead of spawning a simple process, it uses a Virtual Machine Monitor (VMM) or a sandbox monitor to run the unikernel. It is important to note that urunc does not require any particular software running alongise the user's application inside or outside the unikernel. As a result, urunc is able to support any unikernel framework or similar technologies, while maintaining as low overhead as possible.

Key features

  • OCI Compatibility: Compatible with the Open Container Initiative (OCI) standards, enabling the use of existing container tools and workflows.
  • Container Runtime Interface (CRI) Support: Compatible with Kubernetes and other CRI-based systems for seamless integration into container orchestration platforms.
  • Unikernel Support: Run applications and user code as unikernels, unlocking the performance and security advantages of unikernel technology.
  • Integration with VMMs and other strong sandboxing mechanisms: Use lightweight VMMs or sandbox monitors to launch unikernels, facilitating efficient resource isolation and management.
  • Un-opinionated and Extensible: Straightforward and easy integration of new unikernel frameworks and sandboxing mechanisms without any porting overhead.

Use cases

Unikernels are well known as a good fit for a variety of use cases, such as:

  • Microservices: The lightweight and almost deminished OS noise of unikernels can significantly improve the execution of applications, making unikernels an attractive fit for microservices.
  • Serverless and FaaS: The extremely fast instantiation time of unikernels satisfies the event-driven, short-lived and scalable characteristics of serverless computing
  • Edge computing: The lightweight notion of unikernels suits very well with edge devices, where resources constraints and performance are critical.
  • Sensitive environments: The inherited strong VM-based isolation, along with the minimized attack surface of unikernels, provide strong security guarantees for sensitive applications which demand high security standards.

In all the above use cases, urunc facilitates the seamless integration of unikernels with existing cloud-native tools and technologies, enabling the effortless distribution and management of applications running as unikernels.

Current support of unikernels and VM/Sandbox monitors

The following table provides an overview of the currently supported VMMs and Sandbox monitors, along with the unikernels that can run on top of them.

Unikernel VM/Sandbox Monitor Arch Storage
Rumprun Solo5-hvt, Solo5-spt x86, aarch64 Block
Unikraft Qemu, Firecracker x86 Initrd