Default Docker entrypoint

To disable an existing ENTRYPOINT, set an empty array in your docker file

ENTRYPOINT []

Then your arguments to docker run will exec as a shell form CMD would normally.

The reason your ENTRYPOINT ["/bin/sh", "-c"] requires quoted strings is that without the quotes, the arguments to ls are being passed to sh instead.

Unquoted results in lots of arguments being sent to sh

"/bin/sh", "-c", "ls", "-l", "/"

Quoting allows the complete command (sh -c) to be passed on to sh as one argument.

"/bin/sh", "-c", "ls -l /"

This isn't really related to docker. Try running the following:

/bin/sh -c echo foo

/bin/sh -c "echo foo"

The -c means that /bin/sh only picks up one argument. So removing the -c from the entrypoint you define should fix it. This is more flexible than resetting the entry point; e.g. you can do this to use Software Collections:

ENTRYPOINT ["scl", "enable", "devtoolset-4", "--", "bash"]

Tags:

Docker

Sh