Docker RUN vs CMD vs ENTRYPOINT
In Docker build, the three instructions RUN
, CMD
and ENTRYPOINT
look similar and all are instructions used in a Dockerfile to define various aspects of a Docker image. Sometimes it can easily cause confusions. Let’s discuss their differences in this article.
RUN vs CMD vs ENTRYPOINT
RUN
executes commands and creates new image layers.CMD
sets the command and its parameters to be executed by default after the container is started. HoweverCMD
can be replaced bydocker run
command line parameters.ENTRYPOINT
configures the command to run when the container starts, similar toCMD
from a functionality perspective.
Shell Format vs Exec Format
We can specify the command to be run by RUN, CMD and ENTRYPOINT in two ways: Shell format
and Exec format
, which have subtle differences in usage.
Shell Format
Shell format has the following form:
<instruction> <command>
For example:
RUN apt-get install python3
CMD echo "Hello world"
ENTRYPOINT echo "Hello world"