Skip to main content
Redhat Developers  Logo
  • AI

    Get started with AI

    • Red Hat AI
      Accelerate the development and deployment of enterprise AI solutions.
    • AI learning hub
      Explore learning materials and tools, organized by task.
    • AI interactive demos
      Click through scenarios with Red Hat AI, including training LLMs and more.
    • AI/ML learning paths
      Expand your OpenShift AI knowledge using these learning resources.
    • AI quickstarts
      Focused AI use cases designed for fast deployment on Red Hat AI platforms.
    • No-cost AI training
      Foundational Red Hat AI training.

    Featured resources

    • OpenShift AI learning
    • Open source AI for developers
    • AI product application development
    • Open source-powered AI/ML for hybrid cloud
    • AI and Node.js cheat sheet

    Red Hat AI Factory with NVIDIA

    • Red Hat AI Factory with NVIDIA is a co-engineered, enterprise-grade AI solution for building, deploying, and managing AI at scale across hybrid cloud environments.
    • Explore the solution
  • Learn

    Self-guided

    • Documentation
      Find answers, get step-by-step guidance, and learn how to use Red Hat products.
    • Learning paths
      Explore curated walkthroughs for common development tasks.
    • Guided learning
      Receive custom learning paths powered by our AI assistant.
    • See all learning

    Hands-on

    • Developer Sandbox
      Spin up Red Hat's products and technologies without setup or configuration.
    • Interactive labs
      Learn by doing in these hands-on, browser-based experiences.
    • Interactive demos
      Click through product features in these guided tours.

    Browse by topic

    • AI/ML
    • Automation
    • Java
    • Kubernetes
    • Linux
    • See all topics

    Training & certifications

    • Courses and exams
    • Certifications
    • Skills assessments
    • Red Hat Academy
    • Learning subscription
    • Explore training
  • Build

    Get started

    • Red Hat build of Podman Desktop
      A downloadable, local development hub to experiment with our products and builds.
    • Developer Sandbox
      Spin up Red Hat's products and technologies without setup or configuration.

    Download products

    • Access product downloads to start building and testing right away.
    • Red Hat Enterprise Linux
    • Red Hat AI
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products

    Featured

    • Red Hat build of OpenJDK
    • Red Hat JBoss Enterprise Application Platform
    • Red Hat OpenShift Dev Spaces
    • Red Hat Developer Toolset

    References

    • E-books
    • Documentation
    • Cheat sheets
    • Architecture center
  • Community

    Get involved

    • Events
    • Live AI events
    • Red Hat Summit
    • Red Hat Accelerators
    • Community discussions

    Follow along

    • Articles & blogs
    • Developer newsletter
    • Videos
    • Github

    Get help

    • Customer service
    • Customer support
    • Regional contacts
    • Find a partner

    Join the Red Hat Developer program

    • Download Red Hat products and project builds, access support documentation, learning content, and more.
    • Explore the benefits

Test and deploy bootable containers with bootc virtualization kit (bcvk)

Test Red Hat Enterprise Linux 10 bootable containers with bcvk

October 13, 2026
Andre Luiz Facina
Related topics:
LinuxContainers
Related products:
Image mode for Red Hat Enterprise Linux

    Managing a traditional operating system (OS) across multiple hosts often leads to configuration drift, slow updates,and painful rollbacks. Bootable containers solve this by letting you package and manage the OS just like an application image, allowing teams to test base images locally, and then deploy identical builds across virtual or physical infrastructure.

    Red Hat Enterprise Linux 10 (RHEL) introduced the image mode deployment method, which lets you manage operating systems as OCI container images. Also known as bootc images, these artifacts package the entire operating system, including the kernel, initrd, bootloader, and applications, into a single container. Testing a full OS build traditionally meant managing external VM installations or complex PXE environments. With the bootc container virtualization kit (bcvk), the end-to-end testing can be performed directly on a laptop using familiar Podman and libvirt packages.

    Deployment modes in bcvk

    The bcvk tool streamlines the transition from local development to production through 3 specific execution modes:

    Ephemeral (run)

    • Primary use: Rapid testing or iteration
    • Persistence: None (wiped on exit)
    • Speed: Independent of image size
    • Default Memory: 4GB RAM (4096MB)

    Persistent (libvirt)

    • Primary use: Long-term development
    • Persistence: Full (survives reboots, supports bootc upgrade)
    • Speed: Slower; requires disk image creation only for the first run
    • Default Memory: 4GB RAM (4096MB)

    Disk image (to-disk)

    • Primary use: Create bootable disk images
    • Persistence: N/A (Output artifact)
    • Speed: Slower; creates full disk image
    • Default Memory: N/A

    Prerequisites and installation

    Before deploying and testing bootable container images with bcvk, you need:

    • A physical host running RHEL 10, registered with an active Red Hat subscription.
    • Active connectivity reaching an OCI image repository, such as registry.redhat.io or quay.io
    • A valid account in registry.redhat.io or quay.io
    • The Podman container runtime configured to handle image builds and local artifact management

    Use dnf to install bcvk and its dependencies:

    sudo dnf install epel-release
    sudo dnf install bcvk

    If you plan to use persistent VM management, enable and start the libvirt daemon:

    sudo systemctl enable --now libvirtd

    Build a custom bootc image

    The foundation of any bootable container deployment is a custom system image in a Containerfile. Adding the containers.bootc=1 label guarantees your target artifact maintains full compatibility with bcvk tooling. Any existing bootc image is valid to use with bcvk.

    In the following steps, we create a custom container image and deploy it using the 3 bcvk modes: ephemeral, libvirt, and disk image.

    First, create a Containerfile to define the image. For this example, the Containerfile uses the RHEL 10 bootc runtime, applies the containers.bootc=1 metadata label, customizes the motd file, and adds a user as an admin account:

    FROM registry.redhat.io/rhel10/rhel-bootc:latest  
    LABEL containers.bootc=1  
    RUN echo "Welcome to RHEL 10, built with image mode!!" > /etc/motd  
    RUN useradd -m -G wheel admin

    Authenticate to registry.redhat.io using the podman command:

    podman login registry.redhat.io

    Build the container image locally with podman:

    podman build -t rhel10-lab-bcvk .

    Deploy across environments

    After building your image, the primary benefit of bcvk becomes clear: You can execute identical artifacts consistently across diverse environments.

    List the locally available images with the podman images command:

    podman images

    To verify that the image is ready:

    bcvk images list

    This scans local image metadata and returns a list of images containing the containers.bootc=1 label.

    If the image appears in the output of bcvk images list, you can proceed with creating a complete OS using any of the 3 available modes.

    Ephemeral evaluation

    To swiftly validate a fresh build within a temporary instance, deploy the image using the ephemeral mode, while automatically passing your host's SSH credentials:

    bcvk ephemeral run-ssh localhost/rhel10-lab-bcvk

    Additional options include running a VM in detached mode (-d), assigning custom names (--name), and automatically cleaning up resources on exit (--rm).

    Persistent virtualization

    To test state changes over time, run the same image as a persistent libvirt VM. For this, you must verify that:

    • You have installed bcvk on the host system
    • You have installed, enabled, and started libvirtd
    • You have permissions to manage libvirt domains (the typical membership in the libvirt group)
    • You have access to the registry.redhat.io container registry

    To create a basic VM with default settings:

    bcvk libvirt run localhost/rhel10-lab-bcvk

    You can further customize this VM by defining resource constraints, such as allocating 4 CPUs, 4096 MB of memory, and a 50 GB Btrfs filesystem. Manage these environments using bcvk libvirt list, start, stop, or ssh commands.

    Generate a disk image

    Use the bcvk utility with the to-disk command to convert a bootc container image into a physical or virtual disk format for bare metal or cloud deployments.

    Prerequisites:

    • You have installed bcvk on the host system.
    • You have a local or remote bootc container image available
    • You have sufficient disk space on the host to store the generated image

    Create a virtual disk image:

    bcvk to-disk --format=qcow2 --disk-size 20G \
    localhost/rhel10-lab-bcvk output-disk.qcow2

    Using the same bootc image across testing, virtual machines, and bare-metal targets ensures consistent behavior and drastically reduces environmental drift.

    Get started

    Ready to streamline your OS deployments? It's just 3 easy steps:

    1. Set up EPEL
    2. Install bootc container virtualization kit
    3. Build your first Containerfile as demonstrated in this article

    Try it today and find out how easy it is to manage RHEL 10 as a container image!

    Related Posts

    • Build bootable image mode for Red Hat Enterprise Linux with image builder

    • Bootable containers: Reduce friction with Red Hat Enterprise Linux image mode

    • Installing Red Hat Enterprise Linux 10 from a bootc image with bootc

    • Shape the Future of Linux: Contribute to bootc Open Source Project

    Recent Posts

    • Test and deploy bootable containers with bootc virtualization kit (bcvk)

    • Red Hat AI Inference 3.5 MaaS governance on AKS

    • Sharding etcd on hosted control planes and what the numbers actually say

    • Build an AI matching engine with Docling, Granite & OpenShift AI

    • Build a multi-tenant platform with OpenShift Dev Spaces

    What’s up next?

    RHEL 10 cheat sheet tile card

    Red Hat Enterprise Linux 10 cheat sheet

    Seth Kenlon
    Red Hat Developers logo LinkedIn YouTube Twitter Facebook

    Platforms

    • Red Hat AI
    • Red Hat Enterprise Linux
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products

    Build

    • Developer Sandbox
    • Developer tools
    • Interactive tutorials
    • API catalog

    Quicklinks

    • Learning resources
    • E-books
    • Cheat sheets
    • Blog
    • Events
    • Newsletter

    Communicate

    • About us
    • Contact sales
    • Find a partner
    • Report a website issue
    • Site status dashboard
    • Report a security problem

    RED HAT DEVELOPER

    Build here. Go anywhere.

    We serve the builders. The problem solvers who create careers with code.

    Join us if you’re a developer, software engineer, web designer, front-end designer, UX designer, computer scientist, architect, tester, product manager, project manager or team lead.

    Sign me up

    Red Hat legal and privacy links

    • About Red Hat
    • Jobs
    • Events
    • Locations
    • Contact Red Hat
    • Red Hat Blog
    • Inclusion at Red Hat
    • Cool Stuff Store
    • Red Hat Summit
    © 2026 Red Hat

    Red Hat legal and privacy links

    • Privacy statement
    • Terms of use
    • All policies and guidelines
    • Digital accessibility
    Ask AI