bootc - A new project for bootable containers
Colin Walters
March 23, 2023
Who/why?
- Colin Walters, Red Hat, Inc. - Fedora/OpenShift/RHEL/CoreOS engineer
- Why: Computing essential to society, FOSS essential to control computing
Overview
- Transactional background OS upgrades to keep computers up to date
- Separating applications into containers helps upgrades (of host, but also apps)
- Presented and demoed work on bootable containers that can be transactionally updated
- At the time it was classified as experimental
So what changed in the last ~year?
But…
- The name “rpm-ostree” is very literal and suddenly becomes misleading when we’re talking about containers
- While “ostree native container” makes sense…actually it’s also a toplevel goal to “hide” ostree
Hmmm…this is a big change in direction
- All the work to handle “client side” customization in rpm-ostree (package layering) is no longer a focus (but it will continue to work)
- It just makes sense to align with containers more and more at a technical and branding level
Less is more!
- No dependency on rpm
- ostree is a hidden implementation detail; if you have to understand it we have failed
No operating system left behind
- Seamless in-place switch from existing ostree systems!
bootc install: Actually there is more
- bootc started out around 500 LoC; most heavy lifting is in ostree-rust and
skopeo
- Solving “how do I use it”:
podman run --privileged ... ghcr.io/cgwalters/c9s-oscore bootc install /dev/nvme0n1
- (Though, now there’s ~3200 LoC)
bootc install: How it works
- Creates ESP, installs grub, etc. Only handles simple cases!
- Opinionated install of root filesystem; can boot into target OS and dynamically create other partitions
- There’s something neat going on here: Your custom OS container image comes with a free installer!
- Demo time
Also bootc install-to-filesystem
- RAID, Stratis, dm-multipath: Use a separate installer
- We’re not going to ship a GUI obviously; but those can use this as a backend
- Both of these things are (vaguely) planned for e.g. Anaconda
Belated status
- This project is mainly just me, in my 12.7% time
- I use it to update my desktop, but…probably not “production ready” yet
- The CLI may change! (Though unlikely)
What will the next year bring?
- I think current trajectory may be able to stabilize by EOY?
- Obviously, hoping to gather other interested people (and OS/distros) to contribute!