https://github.com/containers/podman-desktop-extension-bootc Skip to content Navigation Menu Toggle navigation Sign in * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Resources + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} containers / podman-desktop-extension-bootc Public * Notifications * Fork 10 * Star 138 * Support for bootable OS containers (bootc) and generating disk images License Apache-2.0 license 138 stars 10 forks Branches Tags Activity Star Notifications * Code * Issues 42 * Pull requests 4 * Actions * Projects 1 * Security * Insights Additional navigation options * Code * Issues * Pull requests * Actions * Projects * Security * Insights containers/podman-desktop-extension-bootc This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main BranchesTags Go to file Code Folders and files Name Name Last commit Last commit message date Latest commit History 308 Commits .github .github __mocks__/ __mocks__/ @podman-desktop @podman-desktop docs docs packages packages tests/playwright tests/playwright types types .dockerignore .dockerignore .editorconfig .editorconfig .eslintignore .eslintignore .eslintrc.json .eslintrc.json .gitattributes .gitattributes .gitignore .gitignore .prettierrc .prettierrc .yarnrc .yarnrc CODE-OF-CONDUCT.md CODE-OF-CONDUCT.md CODEOWNERS CODEOWNERS CONTRIBUTING.md CONTRIBUTING.md Containerfile Containerfile LICENSE LICENSE README.md README.md SECURITY.md SECURITY.md package.json package.json yarn.lock yarn.lock View all files Repository files navigation * README * Code of conduct * Apache-2.0 license * Security BootC (Bootable Container) Extension for Podman Desktop [logo] Want to create a bootable operating system from a Containerfile? Download this extension! Easily go from container to VM / ISO-on-a-USB / RAW image! Topics * Technology * Bootable Container Images * Read Before Using * Example Images * Use Case * Requirements * Installation * Usage * Contributing Technology The Bootable Container (bootc) extension uses bootc-image-builder in order to build bootable container disk images. Once a machine is created from the disk image, it can apply transactional updates "in place" from newly pushed container images (without creating a new disk image). For more information, see bootc. Bootable Container Images There are many projects at work at creating "bootc" images. Below is a non-exhaustive list of compatible images which are known to work with bootc-image-builder. CentOS: * Containerfile: FROM quay.io/centos-bootc/centos-bootc:stream9 * Repo: quay.io/centos-bootc/centos-bootc:stream9 * Example Images: gitlab.com/fedora/bootc/examples * Documentation: fedoraproject.org * Source: github.com/centos/centos-bootc * Notes: N/A Fedora: * Containerfile: FROM quay.io/fedora/fedora-bootc:40 * Repo: quay.io/fedora/fedora-bootc:40 * Example Images: gitlab.com/fedora/bootc/examples * Documentation: fedoraproject.org * Source: gitlab.com/fedora/bootc/base-images * Notes: Must select "XFS" or "EXT4" for the root filesystem when building in the GUI. Read more here. RHEL: * Containerfile: FROM registry.redhat.io/rhel9/rhel-bootc:9.4 * Repo: registry.redhat.io/rhel9/rhel-bootc:9.4 * Documentation: Red Hat Customer Portal The images can then be added to your Containerfile: FROM quay.io/centos-bootc/centos-bootc:stream9 Learning more * Fedora Building Containers Guide: provides an overview on how to create Fedora/CentOS-derived bootc images. * Bootc General Guidance: provides a general configuration overview for bootc images. Read Before Using Some concepts to grasp before using. Think of it as an OS provisioning tool! You are "creating" an OS straight from a Containerfile, isn't that awesome? FIRST realize that you are creating an OS with all your applications, developer tools, even games that you want. SECONDLY ask yourself what applications you want to have running (perhaps on boot too!). Creating your first bootable OS Containerfile Want a quick straight-to-the-point Hello World Containerfile? FROM quay.io/centos-bootc/centos-bootc:stream9 # Change your root password for a "test login" that # allows to log in on a virtual/physical console # NOTE: While some base images may set `PermitRootLogin prohibit-password` # for OpenSSH, not all will. # This is VERY dangerous and only meant for Hello World purposes. RUN echo "root:root" | chpasswd After creating your image you can now login and explore your bootable OS. Example images Want to view more example images Such as httpd and nvidia? All of our maintained example images are on the gitlab.com/fedora/ bootc/examples repo. You can also pull our example image based on the httpd example: [clicking_p] After building, read our Virtual Machine Guide on how to launch your image and access your HTTP server. Use Case Go from a bootc compatible derived container build to a disk image format: * qcow2: QEMU Disk Images * ami: Amazon Machine Images * raw: RAW disk image an MBR or GPT partition table * iso: Unattended installation method (USB sticks / install-on-boot) * vmdk: Usable in vSphere The list above is what is supported by the underlying bootc-image-builder technology. The list can be found here. Requirements Requirement 1. Software and hardware requirements OS: Compatible on Windows, macOS & Linux Software: * Podman Desktop 1.10.0+ * Podman 5.0.1+ Requirement 2. Rootful mode on Podman Machine Podman Machine requirements: * Rootful mode enabled * At least 6GB of RAM allocated in order to build the disk image Rootful mode can be enabled through the CLI to an already deployed VM: podman machine stop podman machine set --rootful podman machine start Or set when initially creating a Podman Machine via Podman Desktop: rootful setup Linux users: On Linux, you are unable to create a Podman Machine through the GUI of Podman Desktop, to create a rootful Podman Machine you can run the following commands: podman machine init --rootful podman machine start Installation This extension can be installed through the Extensions section of Podman Desktop within the Catalog tab: 1. Go to Extensions in the navbar. 2. Click on the Catalog tab. 3. Install the extension. [catalog_in] Nightly version A version of the extension using the latest commit changes can be installed via the Install custom... button with the following link: ghcr.io/containers/podman-desktop-extension-bootc:nightly Usage 1. Build your bootc-enabled Containerfile: In the example below, we are going to change the root password for testing purposes when accessing the OS. FROM quay.io/centos-bootc/centos-bootc:stream9 # Change the root password # CAUTION: This is NOT recommended and is used only for testing / hello world purposes RUN echo "root:root" | chpasswd [build_imag] 2. Build the disk image: Build the disk image, this takes approximatley 2-5 minutes depending on the performance of your machine. [bootc_buil] 3. Launching the VM: See our Virtual Machine Guide on how to launch the image! [os_booting] Preferences Preferences such as the default bootc-builder-image as well as timeouts can be adjusted within the Preferences section of Podman Desktop. [preference] Contributing Want to help develop and contribute to the bootc extension? View our CONTRIBUTING document. About Support for bootable OS containers (bootc) and generating disk images Resources Readme License Apache-2.0 license Code of conduct Code of conduct Security policy Security policy Activity Custom properties Stars 138 stars Watchers 15 watching Forks 10 forks Report repository Releases 7 tags Packages 1 Contributors 10 * @deboer-tim * @cdrage * @dependabot[bot] * @benoitf * @cbr7 * @cgwalters * @TomSweeneyRedHat * @odockal * @slemeur * @vrothberg Languages * TypeScript 59.0% * Svelte 33.9% * JavaScript 6.6% * Other 0.5% Footer (c) 2024 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact * Manage cookies * Do not share my personal information You can't perform that action at this time.