jdx/mise · error

no supported container engine found. Install podman or docke

Error message

no supported container engine found. Install podman or docker.

What it means

With the default `Engine::Auto`, mise probes PATH for `podman` first, then `docker`; if neither exists it bails because every `mise oci run` code path needs a container engine to load and run the image layout. This is the no---engine variant of the two engine-not-found errors.

Source

Thrown at src/cli/oci/run.rs:243

            if file::which("podman").is_some() {
                Ok(Engine::Podman)
            } else {
                bail!("--engine podman requested but `podman` was not found on PATH")
            }
        }
        Engine::Docker => {
            if file::which("docker").is_none() {
                bail!("--engine docker requested but `docker` was not found on PATH");
            }
            Ok(Engine::Docker)
        }
        Engine::Auto => {
            if file::which("podman").is_some() {
                Ok(Engine::Podman)
            } else if file::which("docker").is_some() {
                Ok(Engine::Docker)
            } else {
                bail!("no supported container engine found. Install podman or docker.")
            }
        }
    }
}

fn engine_name(engine: Engine) -> &'static str {
    match engine {
        Engine::Podman => "podman",
        Engine::Docker => "docker",
        Engine::Auto => unreachable!("select_engine resolves Auto to a concrete engine"),
    }
}

/// Load the OCI layout at `image_dir` into the given engine and return the
/// image reference that should be passed to the engine's `run` subcommand.
///
/// We don't rely on `podman tag` here because `podman tag` takes an image
/// name/ID (not a transport reference), and the image name that `podman

View on GitHub (pinned to 9dcfcaa0dc)

Solutions

  1. Install podman (rootless-friendly) or Docker
  2. If an engine is installed but hidden, fix PATH so `which podman`/`which docker` succeeds in mise's environment
  3. In CI, add an engine install step (e.g. `apt-get install -y podman-docker` or docker-in-runner setup) before mise oci commands

Example fix

# before (neither engine installed)
mise oci run ghcr.io/you/devenv:tag -- bash
# after
sudo apt-get install -y podman && mise oci run ghcr.io/you/devenv:tag -- bash
Defensive patterns

Strategy: validation

Validate before calling

# bash: fail fast with your own message when no engine exists
if ! command -v podman >/dev/null 2>&1 && ! command -v docker >/dev/null 2>&1; then
  echo "mise oci needs podman or docker; install one first" >&2; exit 2
fi
mise oci run -- bash

Prevention

When it happens

Trigger: `mise oci run ...` (no --engine) on a host with neither podman nor docker installed or on PATH — bare CI containers, fresh VMs, minimal devimages.

Common situations: Running mise oci commands inside docker:`slim`-style CI images that assume an outer Docker socket but ship no engine CLI; hardened remote dev boxes; forgetting to start/install an engine after OS reinstall.

Related errors


AI-assisted analysis of jdx/mise@9dcfcaa0dc (2026-08-17). Data as JSON: /api/errors/aee854b071a54ead. Report an issue: GitHub.