bcvk - Man Page

bcvk - A toolkit for bootable containers and (local) virtualization.

Synopsis

bcvk [-h|--help] <subcommands>

Description

bcvk helps launch bootc containers using local virtualization for development and CI workflows. Build containers using your tool of choice (podman, docker, etc), then use bcvk to boot them as virtual machines.

Note: bcvk is designed for local development and CI environments, not for running production servers.

Quick Start

The fastest way to boot a bootc container image is with bcvk ephemeral run-ssh:

bcvk ephemeral run-ssh quay.io/fedora/fedora-bootc:42

This boots the container as a VM and drops you into an SSH session. When you exit the SSH session, the VM is automatically cleaned up.

Build and Test Workflow

A typical development workflow combines container builds with ephemeral VM testing:

# Build your bootc container
podman build -t localhost/myimage .

# Boot it as a VM and SSH in (auto-cleanup on exit)
bcvk ephemeral run-ssh localhost/myimage

# Or run in background for longer testing
bcvk ephemeral run -d --rm -K --name testvm localhost/myimage
bcvk ephemeral ssh testvm
# ... test, then stop the VM when done
podman stop testvm

Ephemeral vs Libvirt

bcvk provides two ways to run bootc containers as VMs:

bcvk ephemeral runs stateless VMs managed by podman. The VM boots directly from the container image's filesystem via virtiofs with no disk image creation, making startup very fast. Ideal for quick iteration and CI pipelines.

bcvk libvirt creates stateful VMs managed by libvirt with persistent disk images. These VMs survive reboots and support the full bootc upgrade workflow. Useful for longer-running local development or testing upgrade scenarios.

Subcommands

bcvk-ephemeral(8)

Manage stateless VMs via podman (fast startup, no disk images)

bcvk-images(8)

Manage and inspect bootc container images

bcvk-to-disk(8)

Install bootc images to persistent disk images

bcvk-libvirt(8)

Manage stateful VMs via libvirt (persistent disk images)

Examples

Test a public bootc image interactively:

bcvk ephemeral run-ssh quay.io/centos-bootc/centos-bootc:stream10

Build and test a local image:

podman build -t localhost/mybootc .
bcvk ephemeral run-ssh localhost/mybootc

Run a background VM with SSH access:

bcvk ephemeral run -d --rm -K --name dev quay.io/fedora/fedora-bootc:42
bcvk ephemeral ssh dev

Create a libvirt VM with persistent disk:

bcvk libvirt run --name myvm quay.io/centos-bootc/centos-bootc:stream10
bcvk libvirt ssh myvm

See Also

bcvk-ephemeral(8), bcvk-ephemeral-run(8), bcvk-ephemeral-run-ssh(8), bcvk-libvirt(8), bcvk-to-disk(8), bootc(8)

Version

Referenced By

bcvk-ephemeral(8), bcvk-ephemeral-ps(8), bcvk-ephemeral-rm-all(8), bcvk-ephemeral-run(8), bcvk-ephemeral-run-ssh(8), bcvk-ephemeral-ssh(8), bcvk-images(8), bcvk-images-list(8), bcvk-libvirt-base-disks(8), bcvk-libvirt-inspect(8), bcvk-libvirt-list(8), bcvk-libvirt-list-volumes(8), bcvk-libvirt-rm(8), bcvk-libvirt-rm-all(8), bcvk-libvirt-run(8), bcvk-libvirt-ssh(8), bcvk-libvirt-start(8), bcvk-libvirt-status(8), bcvk-libvirt-stop(8), bcvk-libvirt-upload(8).