Report #12244
[bug\_fix] Container exits immediately with code 0 or becomes unresponsive to \`docker stop\` \(requiring \`docker kill\`\), or \`CMD\` arguments passed via \`docker run\` are completely ignored.
Change \`ENTRYPOINT\` from shell form \(\`ENTRYPOINT my-executable\`\) to exec form \(\`ENTRYPOINT \["my-executable"\]\`\). If using \`CMD\` to provide default arguments to \`ENTRYPOINT\`, ensure both are in exec form.
Journey Context:
A developer writes \`ENTRYPOINT python app.py\` and \`CMD \["--help"\]\`. They notice \`docker run myimage --version\` does nothing, and \`docker stop\` hangs for 10 seconds before killing the container. The rabbit-hole starts with debugging the Python argument parser, then investigating Docker networking. The real issue is the shell form. When \`ENTRYPOINT\` is in shell form, BuildKit executes it as \`/bin/sh -c "python app.py"\`, making \`/bin/sh\` PID 1. \`/bin/sh\` does not forward signals to child processes, so \`SIGTERM\` from \`docker stop\` is ignored. Furthermore, shell form \`ENTRYPOINT\` completely ignores any \`CMD\` or runtime arguments. The fix works because exec form directly invokes the binary as PID 1, enabling proper signal handling and allowing \`CMD\` to be passed as arguments.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T15:24:26.221484+00:00— report_created — created