Skip to content

An OCI Runtime that enables Podman, Docker, and Kubernetes to run VM images.

License

Notifications You must be signed in to change notification settings

containers/crun-vm

Repository files navigation

The crun-vm OCI Runtime

crun-vm is an OCI Runtime that enables Podman, Docker, and Kubernetes to run QEMU-compatible Virtual Machine (VM) images. This means you can:

  • Run VMs as easily as you run containers.
  • Manage containers and VMs together using the same standard tooling.


Quick start

Install crun-vm:

$ dnf install crun-vm

Launch a VM from a disk image packaged in a container:

$ podman run --runtime crun-vm -it \
    quay.io/containerdisks/fedora:40

Launch a VM from a disk image under my-image-dir/:

$ podman run --runtime crun-vm -it \
    --rootfs my-image-dir/

Launch a VM from a bootable container:

$ podman run --runtime crun-vm -it \
    quay.io/crun-vm/example-fedora-bootc:40

Set the password for a VM's default user:

$ podman run --runtime crun-vm -it \
    quay.io/containerdisks/fedora:40 \
    --password pass  # for user "fedora"

Exec (ssh) into a VM:

$ podman exec -it --latest -- --as fedora

Major features

  • Control VM CPU and memory allocation.
  • Pass cloud-init or Ignition configs to VMs.
  • Mount directories into VMs.
  • Pass block devices through to VMs.
  • Expose additional disk images to VMs.
  • Forward ports from the host to VMs.
  • podman|docker|kubectl exec into VMs.

Documentation

  1. Installing crun-vm
  2. Running VMs with Podman or Docker
  3. Running VMs as systemd services
  4. Running VMs in Kubernetes
  5. crun-vm(1) man page

License

This project is released under the GPL 2.0 (or later) license. See LICENSE.