{"record":{"id":"aee854b071a54ead","repo":"jdx/mise","slug":"no-supported-container-engine-found-install-podma","errorCode":null,"errorMessage":"no supported container engine found. Install podman or docker.","messagePattern":"no supported container engine found\\. Install podman or docker\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli/oci/run.rs","lineNumber":243,"sourceCode":"            if file::which(\"podman\").is_some() {\n                Ok(Engine::Podman)\n            } else {\n                bail!(\"--engine podman requested but `podman` was not found on PATH\")\n            }\n        }\n        Engine::Docker => {\n            if file::which(\"docker\").is_none() {\n                bail!(\"--engine docker requested but `docker` was not found on PATH\");\n            }\n            Ok(Engine::Docker)\n        }\n        Engine::Auto => {\n            if file::which(\"podman\").is_some() {\n                Ok(Engine::Podman)\n            } else if file::which(\"docker\").is_some() {\n                Ok(Engine::Docker)\n            } else {\n                bail!(\"no supported container engine found. Install podman or docker.\")\n            }\n        }\n    }\n}\n\nfn engine_name(engine: Engine) -> &'static str {\n    match engine {\n        Engine::Podman => \"podman\",\n        Engine::Docker => \"docker\",\n        Engine::Auto => unreachable!(\"select_engine resolves Auto to a concrete engine\"),\n    }\n}\n\n/// Load the OCI layout at `image_dir` into the given engine and return the\n/// image reference that should be passed to the engine's `run` subcommand.\n///\n/// We don't rely on `podman tag` here because `podman tag` takes an image\n/// name/ID (not a transport reference), and the image name that `podman","sourceCodeStart":225,"sourceCodeEnd":261,"githubUrl":"https://github.com/jdx/mise/blob/9dcfcaa0dc8747a2577d3270b69bb9d8313b2807/src/cli/oci/run.rs#L225-L261","documentation":"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.","triggerScenarios":"`mise oci run ...` (no --engine) on a host with neither podman nor docker installed or on PATH — bare CI containers, fresh VMs, minimal devimages.","commonSituations":"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.","solutions":["Install podman (rootless-friendly) or Docker","If an engine is installed but hidden, fix PATH so `which podman`/`which docker` succeeds in mise's environment","In CI, add an engine install step (e.g. `apt-get install -y podman-docker` or docker-in-runner setup) before mise oci commands"],"exampleFix":"# before (neither engine installed)\nmise oci run ghcr.io/you/devenv:tag -- bash\n# after\nsudo apt-get install -y podman && mise oci run ghcr.io/you/devenv:tag -- bash","handlingStrategy":"validation","validationCode":"# bash: fail fast with your own message when no engine exists\nif ! command -v podman >/dev/null 2>&1 && ! command -v docker >/dev/null 2>&1; then\n  echo \"mise oci needs podman or docker; install one first\" >&2; exit 2\nfi\nmise oci run -- bash","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Add an engine install/verify step to CI images before any mise oci command","Remember mise only probes PATH — flatpak or unusual installs need their CLI on PATH"],"tags":["oci","run","container-engine","podman","docker","path"],"backgroundTag":"container-engine-not-found","analyzedSha":"9dcfcaa0dc8747a2577d3270b69bb9d8313b2807","analyzedAt":"2026-08-17T14:28:50.624Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}