Bird
Raised Fist0
Dockerdevops~5 mins

CMD instruction for default command in Docker - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the CMD instruction in a Dockerfile?
CMD sets the default command that runs when a container starts from the image.
Click to reveal answer
beginner
How many CMD instructions can a Dockerfile have?
Only one CMD instruction is allowed; if multiple are present, the last one takes effect.
Click to reveal answer
intermediate
What happens if you run a Docker container and provide a command after the image name?
The provided command overrides the CMD instruction in the Dockerfile for that container run.
Click to reveal answer
beginner
Show the syntax of CMD using exec form in a Dockerfile.
CMD ["executable", "param1", "param2"] - This form runs the command directly without a shell.
Click to reveal answer
intermediate
What is the difference between CMD and ENTRYPOINT in Docker?
CMD provides default arguments for ENTRYPOINT or a default command, while ENTRYPOINT sets a fixed command that always runs.
Click to reveal answer
What does the CMD instruction do in a Dockerfile?
ASets the default command to run in the container
BBuilds the Docker image
CCopies files into the image
DDefines environment variables
If a Dockerfile has multiple CMD instructions, which one is used?
AThe last CMD instruction
BThe first CMD instruction
CAll CMD instructions run in order
DNone, it causes an error
How can you override the CMD command when running a container?
ABy changing the ENTRYPOINT
BBy specifying a command after the image name in 'docker run'
CBy editing the Dockerfile after building
DBy using the ENV instruction
Which CMD syntax runs the command without a shell?
ACMD executable param1 param2
BCMD (executable param1 param2)
CCMD "executable param1 param2"
DCMD ["executable", "param1", "param2"]
What is the main difference between CMD and ENTRYPOINT?
ACMD copies files; ENTRYPOINT runs commands
BCMD builds image; ENTRYPOINT runs container
CCMD sets default command; ENTRYPOINT sets fixed command
DCMD sets environment; ENTRYPOINT sets volumes
Explain how the CMD instruction works in a Dockerfile and how it interacts with commands given at container run time.
Think about what happens if you run a container with or without extra commands.
You got /3 concepts.
    Describe the difference between the exec form and shell form of the CMD instruction.
    Consider how the command is executed inside the container.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the CMD instruction in a Dockerfile?
      easy
      A. To expose network ports
      B. To set the default command that runs when the container starts
      C. To copy files into the container
      D. To define environment variables

      Solution

      1. Step 1: Understand the role of CMD

        The CMD instruction specifies the default command to run inside the container when it starts.
      2. Step 2: Differentiate from other instructions

        Other instructions like COPY, EXPOSE, and ENV serve different purposes unrelated to the default command.
      3. Final Answer:

        To set the default command that runs when the container starts -> Option B
      4. Quick Check:

        CMD sets default command = C [OK]
      Hint: CMD sets container's default run command [OK]
      Common Mistakes:
      • Confusing CMD with COPY or ENV
      • Thinking CMD exposes ports
      • Assuming CMD sets environment variables
      2. Which of the following is the correct exec form syntax for the CMD instruction to run nginx as the default command?
      easy
      A. CMD ["nginx"]
      B. CMD {"nginx"}
      C. CMD ("nginx")
      D. CMD nginx

      Solution

      1. 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.
      2. 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.
      3. Final Answer:

        CMD ["nginx"] -> Option A
      4. Quick Check:

        CMD JSON array uses brackets and quotes = D [OK]
      Hint: Use JSON array with brackets and quotes for CMD [OK]
      Common Mistakes:
      • Using parentheses or curly braces instead of brackets
      • Omitting quotes around command
      • Using shell form without quotes causing errors
      3. Given this Dockerfile snippet:
      FROM alpine
      CMD ["echo", "Hello World"]

      What will be the output when you run the container without overriding the command?
      medium
      A. No output, container exits silently
      B. echo Hello World
      C. Hello World
      D. Error: command not found

      Solution

      1. Step 1: Understand CMD execution

        The CMD instruction runs echo with argument Hello World as the default command inside the container.
      2. Step 2: Predict container output

        Running the container executes echo "Hello World", which prints Hello World to the console.
      3. Final Answer:

        Hello World -> Option C
      4. Quick Check:

        CMD runs echo with args = Hello World [OK]
      Hint: CMD JSON array runs command with args exactly [OK]
      Common Mistakes:
      • Thinking CMD prints the command itself
      • Assuming no output without explicit print
      • Confusing CMD with ENTRYPOINT behavior
      4. Identify the best practice issue in this Dockerfile snippet:
      FROM ubuntu
      CMD echo Hello World
      medium
      A. Missing quotes around Hello World
      B. FROM instruction is incorrect
      C. CMD cannot run echo command
      D. CMD should be in JSON array form for best practice

      Solution

      1. Step 1: Check CMD syntax

        The CMD instruction here uses shell form without quotes, which is allowed but less safe and less clear.
      2. Step 2: Recommend JSON array form

        Best practice is to use JSON array form like CMD ["echo", "Hello World"] to avoid shell parsing issues.
      3. Final Answer:

        CMD should be in JSON array form for best practice -> Option D
      4. Quick Check:

        Use JSON array for CMD best practice = B [OK]
      Hint: Prefer JSON array form for CMD to avoid shell issues [OK]
      Common Mistakes:
      • Thinking shell form is invalid syntax
      • Assuming quotes are mandatory in shell form
      • Believing CMD cannot run simple commands
      5. You have this Dockerfile:
      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?
      hard
      A. docker run myimage node test.js
      B. docker run myimage CMD ["node", "test.js"]
      C. docker run myimage --cmd node test.js
      D. docker run myimage run node test.js

      Solution

      1. Step 1: Understand CMD override

        When running a container, any command after the image name overrides the Dockerfile CMD instruction.
      2. Step 2: Identify correct docker run syntax

        The correct syntax is docker run myimage node test.js. Options with CMD or --cmd flags are invalid.
      3. Final Answer:

        docker run myimage node test.js -> Option A
      4. Quick Check:

        Override CMD by adding command after image name = A [OK]
      Hint: Override CMD by adding command after image name in docker run [OK]
      Common Mistakes:
      • Using CMD or --cmd flags in docker run
      • Placing command before image name
      • Using invalid docker run syntax
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard