bootc
Manage and update operating system images
TLDR
Show deployments in the order they will appear in the bootloader
Check if any updates are available
Prepare a new update and reboot into it
Change OS base to new container image
Reboot into the previous ostree deployment
SYNOPSIS
bootc <subcommand> [options]
Common subcommands include: install, upgrade, status, rebase, pull, pivot.
PARAMETERS
install <image_reference>
Installs the specified container image as a bootable OS onto a target disk. Example: quay.io/centos-bootc/centos-bootc:stream9
--target-disk <path>
Specifies the disk device to install the OS onto (e.g., /dev/sda). Warning: This operation typically wipes the disk.
--root-ssh-authorized-keys <path>
Provides a path to an SSH authorized_keys file for the root user on the installed system.
--generic-system
Installs a generic system, not relying on Ignition for initial provisioning. Useful for simpler setups.
upgrade
Upgrades the currently running bootc-managed system to the latest available version of its current image stream.
status
Displays the current status of the bootc-managed system, including the currently deployed image and any pending updates.
rebase <image_reference>
Changes the base image of the currently running system to a different specified image, similar to an upgrade but potentially to a different image stream.
pull <image_reference>
Pulls a specified container image into the local OSTree repository without installing it.
DESCRIPTION
bootc is a command-line utility from Red Hat designed to deploy and manage Linux operating systems as container images. It transforms a standard container image into a fully bootable operating system, enabling image-based, atomic updates and rollbacks. By leveraging familiar container registries (like Docker Hub or Quay.io) for OS distribution, bootc streamlines the deployment and lifecycle management of systems, particularly beneficial for immutable infrastructure, edge devices, and embedded systems.
Underneath, bootc utilizes OSTree for atomic filesystem updates and transactions, ensuring that system upgrades are either fully applied or completely reverted, preventing partial updates. It also integrates with bootupd for managing system firmware updates. This approach simplifies OS provisioning, enhances system consistency, and reduces operational complexity by treating the entire operating system as a single, versioned artifact.
CAVEATS
bootc is a relatively new and evolving tool, primarily designed for immutable, image-based Linux distributions (like Fedora CoreOS, RHEL for Edge, or custom bootc-enabled images). It is not intended for traditional package-managed systems (e.g., those using yum/dnf or apt). Installation typically performs a destructive write to the target disk, wiping existing data. Users should ensure they are using a compatible OS image and understand the implications of immutable system management.
DESIGN PHILOSOPHY
bootc embraces the principles of immutable infrastructure, treating the operating system as an atomically updateable artifact. This design minimizes configuration drift, simplifies rollbacks, and enhances consistency across deployments by leveraging standard container image distribution mechanisms. It aims to make operating system management as predictable and reliable as managing application containers.
HISTORY
bootc emerged from Red Hat's ongoing efforts to modernize Linux operating system deployment and management, building upon the foundations laid by projects like Atomic Host and Fedora CoreOS. Its development gained significant public visibility around 2022-2023, representing an evolution of OSTree-based atomic updates into a more container-native and accessible format. The core idea is to leverage the robust ecosystem of container images and registries for OS distribution, akin to how application containers are deployed, thereby standardizing and simplifying the immutable OS paradigm for a wider range of use cases, particularly at the edge.
SEE ALSO
ostree(1), podman(1), skopeo(1), rpm-ostree(1), bootupd(8)