Bird
Raised Fist0
Dockerdevops~5 mins

Targeting specific stages in Docker - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a multi-stage build in Docker?
A multi-stage build lets you use multiple FROM statements in one Dockerfile. Each stage can build parts of the app, and you can copy only the needed parts to the final image. This keeps the image small and clean.
Click to reveal answer
beginner
How do you name a stage in a Dockerfile?
You name a stage by adding 'AS ' after the FROM instruction. For example: FROM node:18 AS builder names the stage 'builder'.
Click to reveal answer
intermediate
How can you copy files from a specific stage in a multi-stage Docker build?
Use the COPY --from= command to copy files from a named stage. For example: COPY --from=builder /app/build /app copies files from the 'builder' stage.
Click to reveal answer
intermediate
Why target a specific stage when building a Docker image?
Targeting a specific stage lets you build only part of the Dockerfile. This is useful for testing or debugging intermediate stages without building the whole image.
Click to reveal answer
beginner
What is the Docker build command option to target a specific stage?
Use the --target option with docker build to specify which stage to build. For example: docker build --target builder -t myapp:builder . builds only the 'builder' stage.
Click to reveal answer
What does the 'AS' keyword do in a Dockerfile multi-stage build?
ANames a build stage
BSpecifies the base image version
CCopies files between stages
DRuns a command inside the container
How do you copy files from a previous stage named 'builder'?
ACOPY builder /src /dest
BCOPY --from=builder /src /dest
CCOPY /src /dest --stage=builder
DCOPY --stage=builder /src /dest
Which docker build option lets you build only a specific stage?
A--stage
B--only
C--target
D--build-stage
Why use multi-stage builds in Docker?
ATo speed up network downloads
BTo run multiple containers at once
CTo create multiple images from one Dockerfile
DTo reduce final image size by copying only needed files
What happens if you don't specify --target when building a multi-stage Dockerfile?
ADocker builds the final stage by default
BDocker builds only the first stage
CDocker builds all stages separately
DDocker throws an error
Explain how to use multi-stage builds to keep Docker images small.
Think about building in steps and copying only what you need.
You got /4 concepts.
    Describe how to build only a specific stage in a Dockerfile.
    Focus on the docker build command options.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the --target <stage-name> option do when building a Docker image?
      easy
      A. It deletes the specified stage from the Dockerfile.
      B. It builds only the specified stage in a multi-stage Dockerfile.
      C. It runs the container from the specified stage.
      D. It tags the image with the stage name.

      Solution

      1. Step 1: Understand multi-stage Dockerfiles

        Multi-stage Dockerfiles have multiple build stages named with AS <stage-name>.
      2. Step 2: Purpose of --target

        The --target <stage-name> option tells Docker to build only up to that named stage, skipping later stages.
      3. Final Answer:

        It builds only the specified stage in a multi-stage Dockerfile. -> Option B
      4. Quick Check:

        --target builds specific stage [OK]
      Hint: Use --target to build just one stage fast [OK]
      Common Mistakes:
      • Thinking --target runs containers
      • Confusing --target with image tagging
      • Assuming --target deletes stages
      2. Which of the following is the correct syntax to name a build stage in a Dockerfile?
      easy
      A. FROM ubuntu WITH builder
      B. FROM ubuntu TO builder
      C. FROM ubuntu STAGE builder
      D. FROM ubuntu AS builder

      Solution

      1. Step 1: Identify stage naming syntax

        Dockerfile uses FROM <image> AS <stage-name> to name stages.
      2. Step 2: Check options

        Only FROM ubuntu AS builder uses AS correctly to name the stage.
      3. Final Answer:

        FROM ubuntu AS builder -> Option D
      4. Quick Check:

        Stage naming uses AS keyword [OK]
      Hint: Remember: FROM ... AS stageName [OK]
      Common Mistakes:
      • Using TO or WITH instead of AS
      • Missing the AS keyword
      • Confusing stage naming with container commands
      3. Given this Dockerfile snippet:
      FROM node:18 AS build
      RUN npm install
      FROM nginx:alpine
      COPY --from=build /app/build /usr/share/nginx/html

      What happens if you run docker build --target build .?
      medium
      A. Fails because --target cannot be used with COPY --from.
      B. Builds both stages and creates a final image with nginx.
      C. Builds only the node:18 stage and stops before nginx stage.
      D. Builds only the nginx stage and ignores node:18 stage.

      Solution

      1. Step 1: Identify stages and target

        The Dockerfile has two stages: 'build' (node:18) and default (nginx:alpine). The command targets 'build'.
      2. Step 2: Effect of --target build

        Using --target build builds only the first stage and stops before the second stage.
      3. Final Answer:

        Builds only the node:18 stage and stops before nginx stage. -> Option C
      4. Quick Check:

        --target stops build at named stage [OK]
      Hint: Target stage builds only that stage, skips later ones [OK]
      Common Mistakes:
      • Assuming all stages build with --target
      • Thinking COPY --from breaks build
      • Confusing target stage with final image
      4. You have this Dockerfile snippet:
      FROM python:3.12 AS base
      RUN pip install flask
      FROM base
      RUN pip install pytest

      You run docker build --target test . but get an error: "unknown stage name test". What is the likely cause?
      medium
      A. The stage name 'test' is not defined correctly in the Dockerfile.
      B. You must build the 'base' stage first before 'test'.
      C. The Docker version does not support multi-stage builds.
      D. The --target option cannot be used with Python images.

      Solution

      1. Step 1: Check stage naming

        The Dockerfile snippet defines 'base' with AS base correctly, but the second stage FROM base lacks AS test, so 'test' is not defined.
      2. Step 2: Identify error cause

        The error "unknown stage name test" means Docker did not recognize 'test' stage due to improper definition.
      3. Final Answer:

        The stage name 'test' is not defined correctly in the Dockerfile. -> Option A
      4. Quick Check:

        Unknown stage means wrong or missing stage name [OK]
      Hint: Check stage names exactly match in Dockerfile and command [OK]
      Common Mistakes:
      • Assuming stages build in order automatically
      • Ignoring Docker version compatibility
      • Thinking --target depends on image type
      5. You want to build only the 'final' stage from this Dockerfile:
      FROM golang:1.20 AS builder
      RUN go build -o app .
      FROM alpine:latest AS final
      COPY --from=builder /app /app
      CMD ["/app"]

      Which command correctly builds only the 'final' stage?
      medium
      A. docker build --target final .
      B. docker build --target builder .
      C. docker build --stage final .
      D. docker build --name final .

      Solution

      1. Step 1: Identify the stage to build

        The Dockerfile has two stages: 'builder' and 'final'. We want to build 'final'.
      2. Step 2: Use correct build command

        The correct syntax to build a specific stage is docker build --target <stage-name> .. So use --target final.
      3. Final Answer:

        docker build --target final . -> Option A
      4. Quick Check:

        --target final builds final stage [OK]
      Hint: Use --target with exact stage name to build it [OK]
      Common Mistakes:
      • Using --stage or --name instead of --target
      • Building wrong stage name
      • Forgetting the dot (.) at the end
      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