Reputation: 1184
I am creating an image from another image that set a specific entrypoint. However I want my image to have default one. How do I reset the ENTRYPOINT?
I tried the following Dockerfile:
FROM some-image
ENTRYPOINT ["/bin/sh", "-c"]
Unfortunately it doesn't work like the default entrypoint as it need the command to be quoted.
docker run myimage ls -l / # "-l /" arguments are ignored
file1 file2 file3 # files in current working directory
docker run myimage "ls -l /" # works correctly
How do I use commands without quoting?
Upvotes: 50
Views: 43903
Reputation: 74660
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 /"
Upvotes: 68
Reputation: 1323593
Note: beware of ENTRYPOINT []
.
As mentioned in moby/moby
issue 3465 ("Reset properties inherited from parent image"), Brendon C. notes:
Looks like
ENTRYPOINT []
andENTRYPOINT [""]
both invalidate the cache on each build when not using BuildKit.Simple Dockerfile to demonstrate:
FROM jrottenberg/ffmpeg:4.3-alpine311 as base
ENTRYPOINT []
RUN echo "HERE!"
Steps 2 and 3 will never use cache. This is my workaround:
FROM jrottenberg/ffmpeg:4.3-alpine311 as base
ENTRYPOINT ["/usr/bin/env"]
RUN echo "HERE!"
Upvotes: 3
Reputation: 8843
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"]
Upvotes: 5