BCVK-EPHEMERAL(8)
π BCVK-EPHEMERAL(8) β the manual page, but make it a group chat π
okay bestie so this is bcvk-ephemeral, section 8 of the manual, and it's literally the girlboss of stateless VM management. it lives under bcvk, and it is obsessed with bootc container images. no cap. let's get into it. π¦
β¨ SYNOPSIS β¨
bcvk ephemeral <SUBCOMMAND>
that's it. that's the whole vibe. you give it a subcommand, it gives you a VM. π
πΈ DESCRIPTION πΈ
so. you want to manage stateless VMs for bootc container images. that's the whole job. that's what this does.
Ephemeral VMs are managed by podman and boot directly from the container image's filesystem. now, if you've met bcvk-libvirt-run(8) (the libvirt VM girlies), this is a whole different energy. ephemeral VMs:
- Boot directly from the container image via
virtiofsβ no disk image creation, we don't do that here π - Start in seconds rather than minutes (the way that it's fast?? iconic)
- Are stateless by default β filesystem changes don't persist across restarts, so don't get attached
- Are managed via
podmanβ use familiar container tooling, iykyk
fr fr this makes ephemeral VMs ideal for local development, CI pipelines, and any workflow where you want fast iteration without persistent state. main character workflow energy only.
π§ How It Works
Ephemeral VMs use a container-in-container architecture. yes bestie, containers inside containers, it's giving inception but make it virtualization:
- A
podmancontainer is launched containing QEMU andvirtiofsd - The bootc container image's filesystem is shared into the VM via
virtiofs - The VM boots using the kernel and initramfs from the container image
- SSH access is provided via dynamically generated keys π
your host needs /dev/kvm access and a virtualization stack (qemu, virtiofsd). no /dev/kvm, no VM, that's just the rules. π
π SUBCOMMANDS π
bcvk-ephemeral-run(8)β Run a bootc container as an ephemeral VMbcvk-ephemeral-run-ssh(8)β Run an ephemeral VM and immediately SSH into it (auto-cleanup on exit, she cleans up after herself π«Ά)bcvk-ephemeral-test-basic(8)β Boot an ephemeral VM and check thatsystemdreaches the running statebcvk-ephemeral-ssh(8)β SSH into a running ephemeral VMbcvk-ephemeral-ps(8)β List running ephemeral VMsbcvk-ephemeral-rm-all(8)β Remove all ephemeral VM containers
π₯ EXAMPLES π₯
β Quick Interactive Session
the simplest way to boot a bootc image is run-ssh, which starts the VM and drops you into an SSH session. when you exit, the VM is cleaned up. auto. effortless. periodt.
bcvk ephemeral run-ssh quay.io/fedora/fedora-bootc:42
π Build and Test Workflow
a typical development loop combines podman build with ephemeral testing. the way that this is just the daily routine:
# Edit your Containerfile
vim Containerfile
# Build the image
podman build -t localhost/mybootc .
# Test it immediately
bcvk ephemeral run-ssh localhost/mybootc
# Iterate: edit, build, test again
podman build -t localhost/mybootc . && bcvk ephemeral run-ssh localhost/mybootc
π Background VM with SSH Access
for longer sessions, or when you need to reconnect, run the VM in the background. lowkey the move:
# Start VM in background with SSH keys and auto-cleanup
bcvk ephemeral run -d --rm -K --name testvm quay.io/fedora/fedora-bootc:42
# SSH into it (can reconnect multiple times)
bcvk ephemeral ssh testvm
# Run commands directly
bcvk ephemeral ssh testvm 'systemctl status'
# Stop when done (--rm ensures cleanup)
podman stop testvm
π Development VM with Host Directory Access
mount your source code into the VM for development. bestie your code is in there now:
bcvk ephemeral run -d --rm -K \
--bind /home/user/project:project \
--name devvm localhost/mybootc
bcvk ephemeral ssh devvm
# Inside VM: cd /run/virtiofs-mnt-project
π Resource Customization
allocate more resources for heavy workloads. feed her, she's hungry:
bcvk ephemeral run-ssh --memory 8G --vcpus 4 localhost/mybootc
or use instance types:
bcvk ephemeral run-ssh --itype u1.medium localhost/mybootc
π¦ SEE ALSO π¦
bcvk(8), bcvk-ephemeral-run(8), bcvk-ephemeral-run-ssh(8), bcvk-ephemeral-ssh(8), bcvk-libvirt(8)
π« VERSION π«
v0.21.0
okay that's the whole page, you ate it, you understood it, I'm so proud of you π₯Ήβ¨ this was bcvk-ephemeral(8), and this version of the manual is v0.21.0 β sending you all the virtualized love from the group chat, mwah πππ«Ά </parameter>
π¦ where this page comes from
- fedora 43: bcvk 0.21.0-1.fc43 Β· Apache-2.0 OR MIT
- fedora 44: bcvk 0.21.0-1.fc44 Β· Apache-2.0 OR MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms