What is the CMD command in Docker?
The CMD command specifies the instruction that is to be executed when a Docker container starts.
For example:
FROM ubuntu:latestCMD echo 'Hello world'
This 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.
Syntax
The 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"]
Multiple CMD commands
In principle, there should only be one CMD command in your Dockerfile. When CMD is used multiple times, only the last instance is executed.
Overriding CMD
A 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 CMD with ENTRYPOINT. However, 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 CMD.
Free Resources