What if your Docker container could just start working the moment you run it, without extra typing?
Why CMD instruction for default command in Docker? - Purpose & Use Cases
Imagine you build a Docker image but forget to set a default command. Every time you run a container, you have to type the full command manually. This slows you down and causes mistakes.
Typing the command each time is tiring and error-prone. You might forget options or mistype commands, leading to failed container starts or unexpected behavior.
The CMD instruction in a Dockerfile sets a default command for the container. This means you don't have to type it every time. The container just knows what to do when it starts.
docker run myimage python app.py
CMD ["python", "app.py"]
It lets you run containers quickly and consistently without repeating commands.
A developer builds a web app image and sets CMD to start the server. Now teammates can run the app with just docker run appimage, no extra typing needed.
Typing commands manually wastes time and causes errors.
CMD sets a default command inside the Docker image.
This makes running containers easier and more reliable.
Practice
CMD instruction in a Dockerfile?Solution
Step 1: Understand the role of CMD
TheCMDinstruction specifies the default command to run inside the container when it starts.Step 2: Differentiate from other instructions
Other instructions likeCOPY,EXPOSE, andENVserve different purposes unrelated to the default command.Final Answer:
To set the default command that runs when the container starts -> Option BQuick Check:
CMD sets default command = C [OK]
- Confusing CMD with COPY or ENV
- Thinking CMD exposes ports
- Assuming CMD sets environment variables
CMD instruction to run nginx as the default command?Solution
Step 1: Recall CMD syntax forms
Docker supports two CMD forms: shell form (string) and exec form (JSON array). The exec form is recommended for clarity and safety.Step 2: Identify correct JSON array syntax
The correct JSON array syntax uses square brackets and double quotes:CMD ["nginx"]. Other options use invalid syntax.Final Answer:
CMD ["nginx"] -> Option AQuick Check:
CMD JSON array uses brackets and quotes = D [OK]
- Using parentheses or curly braces instead of brackets
- Omitting quotes around command
- Using shell form without quotes causing errors
FROM alpine CMD ["echo", "Hello World"]
What will be the output when you run the container without overriding the command?
Solution
Step 1: Understand CMD execution
The CMD instruction runsechowith argumentHello Worldas the default command inside the container.Step 2: Predict container output
Running the container executesecho "Hello World", which printsHello Worldto the console.Final Answer:
Hello World -> Option CQuick Check:
CMD runs echo with args = Hello World [OK]
- Thinking CMD prints the command itself
- Assuming no output without explicit print
- Confusing CMD with ENTRYPOINT behavior
FROM ubuntu CMD echo Hello World
Solution
Step 1: Check CMD syntax
The CMD instruction here uses shell form without quotes, which is allowed but less safe and less clear.Step 2: Recommend JSON array form
Best practice is to use JSON array form likeCMD ["echo", "Hello World"]to avoid shell parsing issues.Final Answer:
CMD should be in JSON array form for best practice -> Option DQuick Check:
Use JSON array for CMD best practice = B [OK]
- Thinking shell form is invalid syntax
- Assuming quotes are mandatory in shell form
- Believing CMD cannot run simple commands
FROM node:18 CMD ["node", "app.js"]
You want to override the default command to run
node test.js when starting the container. Which command will do this correctly?Solution
Step 1: Understand CMD override
When running a container, any command after the image name overrides the Dockerfile CMD instruction.Step 2: Identify correct docker run syntax
The correct syntax isdocker run myimage node test.js. Options with CMD or --cmd flags are invalid.Final Answer:
docker run myimage node test.js -> Option AQuick Check:
Override CMD by adding command after image name = A [OK]
- Using CMD or --cmd flags in docker run
- Placing command before image name
- Using invalid docker run syntax
Ready to prove it?
Pass the test and this pattern moves unknown
