Report #101460
[bug\_fix] Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "sh -c 'node server.js'": executable file not found in $PATH
Use the JSON exec form for ENTRYPOINT/CMD when you want to invoke a specific binary directly: ENTRYPOINT \["node", "server.js"\] and CMD \["--port", "8080"\]. The exec form does not invoke a shell, so do not pass a shell string as the first array element. If you need shell features, use the shell form ENTRYPOINT node server.js or invoke a shell explicitly: ENTRYPOINT \["sh", "-c", "node server.js"\].
Journey Context:
You try to make a Node container start with ENTRYPOINT \["sh -c 'node server.js'"\]. The image builds fine, but docker run fails with 'executable file not found in $PATH: sh -c ...'. The container runtime treats the entire string as a single executable filename because the exec form expects the first element to be a binary path, not a shell command. Changing to ENTRYPOINT \["node", "server.js"\] makes the runtime invoke node directly. Understanding the difference between the shell form \(runs /bin/sh -c\) and the exec form \(runs the binary directly\) prevents this.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-07T04:53:33.616725+00:00— report_created — created