Skip to main content Link Menu Expand (external link) Document Search Copy Copied

This document has moved

See https://bootc-org.gitlab.io/documentation/



Trying out development builds

Before you build a derived container image, you may want to just get a feel for the system, try out bootc, etc. The bootable container images produced by this project are intended to be deployable in every physical and virtual environment that is supported by CentOS Stream 9 today.

First, an important note to understand: the generic base container images do not include any default passwords or SSH keys.

Local virtualization (Linux & MacOS)

podman desktop plugin (currently MacOS only)

There is a podman desktop extension dedicated to this.

podman-bootc-cli

A new podman-bootc-cli tool project offers a dedicated and streamlined CLI interface for running images, and in the future, it will become the backend for the podman desktop plugin.

bootc-image-builder

The bootc-image-builder tool supports generating local-virtualization ready types such as qcow2 and .raw from the bootable container image.

The dedicated cloud-init image

Many people who just want to “try things out” will find it easiest to start with the cloud image. It’s a separate container image because cloud-init does not work on every deployment target, and it also serves as an effective demonstration of layering.

Production-oriented physical installation

This project uses the same Anaconda installer as the package-based CentOS. Here’s an example kickstart:

# Basic setup
text
network --bootproto=dhcp --device=link --activate
# Basic partitioning
clearpart --all --initlabel --disklabel=gpt
reqpart --add-boot
part / --grow --fstype xfs

# Here's where we reference the container image to install - notice the kickstart
# has no `%packages` section!  What's being installed here is a container image.
ostreecontainer --url quay.io/centos-bootc/centos-bootc:stream9 --no-signature-verification

firewall --disabled
services --enabled=sshd

# Only inject a SSH key for root
rootpw --iscrypted locked
sshkey --username root "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOQkQHeKan3X+g1jILw4a3KtcfEIED0kByKGWookU7ev walters+2015-general@verbum.org"
reboot

Production-oriented cloud virtualization

Generating AMIs, ISO and qcow2 (and more)

The bootc-image-builder tool which supports .qcow2 usable in OpenStack/libvirt etc. also supports generating Amazon Machine Images, and other production-oriented IaaS formats as well as a self-installing ISO. For more, please see the docs for that project.

After a disk image is generated, further updates will come from the container image.

Replacing existing cloud images

A toplevel goal of this project is that the “source of truth” for Linux operating system management is a container image registry - as opposed to e.g. a set of qcow2 OpenStack images or AMIs, etc. Generating cloud disk images gives fast boots into the target container image state, but also requires maintaining infrastructure to e.g. manage garbage collection or versioning of these images.

The latest releases of bootc have support for bootc install to-filesystem --replace=alongside. More about this core mechanic in the bootc install docs.

Here’s an example set of steps to execute; this could be done via e.g. cloud-init configuration.

dnf -y install podman skopeo
podman run --rm --privileged --pid=host -v /:/target -v /var/lib/containers:/var/lib/containers --security-opt label=type:unconfined_t <yourimage> bootc install to-filesystem --karg=console=ttyS0,115200n8 --replace=alongside /target
reboot