VIRTUAL MACHINES. CONTAINER WORKFLOWS.
Network operating systems.
Neatly boxed.¶
Boxen turns a network OS virtual machine into a portable container image. Bring a vendor disk and a YAML profile; Boxen handles the first boot, prepares the operating system, and packages it for your next Containerlab or c9s lab.
Written in Go · Driven by YAML · Built for network labs running on Containerlab or c9s
Boxen packs a network OS VM into a container image.¶
The container still runs QEMU VM inside, there is no way around it, however by packaging it in a container, you get a familiar way to store, distribute, and launch it. Boxen automates the packaging process and handles everything Containerlab or c9s needs to successfully boot and run the image.
01 / DEFINE
Describe your box¶
A profile defines the VM hardware, boot prompts, baseline configuration, and runtime steps. Start with an included profile or adapt one for your platform.
02 / PACKAGE
Prepare it once¶
boxen build starts a builder, converts the disk to QCOW2, boots the OS, and saves a prepared disk and profile in a local container image.
03 / RUN
Make it a lab¶
Containerlab starts your image. Boxen boots QEMU, connects the interfaces, applies the node configuration, and reports readiness.
YOUR FIRST IMAGE
boxen build --disk /path/to/cumulus-linux-5.16.1-vx-amd64-qemu.qcow2 \
--profile nvidia_cumulusvx --tag 5.16.1
The result is boxen-nvidia_cumulusvx:5.16.1. Point your topology at that image and deploy. The quick start walks through the complete workflow.
Boxen vs VRnetLab¶
Boxen and VRnetLab both package network OS virtual machines into container images. Boxen puts the preparation and runtime instructions in YAML profiles, with a common architecture across network OSes.
01 / YAML PROFILES
Low code approach¶
Describe how to prepare and run an image in a YAML profile. Every supported network OS uses the same architecture and shared runtime.
02 / CLI RUNNER
Intuitive CLI runner¶
Build, package, and run images through a consistent CLI with clear flags and built-in help. Load and share the resulting images with familiar Docker commands.
03 / CUSTOM OS
Decoupled build process¶
Add a custom OS with a single YAML profile and pass it to boxen build --profile. Keep and iterate on your profile locally; no pull request or upstream merge is required.
Everything you need to build the next lab¶
Get up and running¶
Installation covers the Linux host, Docker, KVM, and the Boxen binary. Follow the quick start to package an image and deploy two nodes.
Understand the lifecycle¶
Learn the packaging process, the run process, and how management networking reaches the guest.
Make a profile your own¶
Explore the profile structure, console steps, template values, and QEMU configuration.
Keep your images useful¶
Manage images, share them through a registry, refresh the runtime without repackaging, and troubleshoot boot or connectivity issues.
Boxen is under active development. Check the included platforms for profile-specific requirements and join the Containerlab community to discuss new platform support.