CMD command specifies the instruction that is to be executed when a Docker container starts.
FROM ubuntu:latest CMD echo 'Hello world'
CMD command is not really necessary for the container to work, as the
echo command can be called in a
RUN statement as well.
The main purpose of the
CMD command is to launch the software required in a container. For example, the user may need to run an executable
.exe file or a Bash terminal as soon as the container starts – the
CMD command can be used to handle such requests.
CMD command we saw earlier followed the Shell syntax:
CMD executable parameter1 parameter2
However, it is better practice to use the JSON array format:
CMD ["executable", "parameter1", "parameter2"]
In principle, there should only be one
CMD command in your Dockerfile. When
CMD is used multiple times, only the last instance is executed.
CMD command can be overridden by providing the executable and its parameters in the
docker run command. For example:
docker run executable parameters
The command above will override any
CMD in the Dockerfile.
Many developers confuse
ENTRYPOINT cannot be overridden by
docker run. Instead, whatever is specified in
docker run will be appended to
ENTRYPOINT – this is not the case with