Report #15023
[bug\_fix] docker run overriding ENTRYPOINT fails or appends incorrectly
If the image uses \`ENTRYPOINT\`, use \`CMD\` to provide default arguments, and ensure the entrypoint script uses \`exec "$@"\` to pass control to the arguments provided at runtime. To override entirely at runtime, use \`docker run --entrypoint /bin/sh myimage\`.
Journey Context:
A developer writes a Dockerfile with \`ENTRYPOINT \["python", "app.py"\]\` and later tries to override it by running \`docker run myimage bash\` to debug the container. Instead of getting a bash shell, the container crashes with a Python error, trying to execute \`python app.py bash\`. They spend hours trying different flag combinations. The root cause is how Docker combines \`ENTRYPOINT\` and \`CMD\`: \`ENTRYPOINT\` defines the executable, and \`CMD\` defines the default arguments. When overriding at runtime, arguments are appended to \`ENTRYPOINT\`. The fix is to use an entrypoint script that processes signals and arguments, ending with \`exec "$@"\`, which executes the command passed as arguments \(like \`bash\`\), replacing the script process cleanly.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T22:56:25.641776+00:00— report_created — created