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"]