Bird
Raised Fist0
Dockerdevops~5 mins

Scratch base image for minimal containers in Docker - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the scratch base image in Docker?
The scratch base image is an empty image with no files or operating system. It is used to build minimal containers containing only your application and its dependencies.
Click to reveal answer
beginner
Why use the scratch image for containers?
Using scratch creates very small containers, improving security and performance by including only what is necessary to run the app.
Click to reveal answer
beginner
How do you specify the scratch image in a Dockerfile?
You write FROM scratch at the top of your Dockerfile to start building from an empty base image.
Click to reveal answer
intermediate
What must you include in a container built from scratch to make it runnable?
You must add your application binary and any required files manually because scratch has no OS or tools.
Click to reveal answer
beginner
Give an example of a simple Dockerfile using scratch.
Example:
FROM scratch
COPY myapp /
CMD ["/myapp"]
This copies a binary myapp into the container and runs it.
Click to reveal answer
What does the scratch image contain?
AA minimal Linux OS
BA full Ubuntu system
CNothing, it is empty
DOnly shell utilities
Which Dockerfile line starts a build from the scratch image?
AFROM scratch
BFROM ubuntu
CFROM alpine
DFROM base
Why might you choose scratch over other base images?
ATo create the smallest possible container
BTo get a full OS environment
CTo have pre-installed tools
DTo use a graphical interface
What must you do when using scratch as base image?
ANothing, it has everything needed
BInstall an OS inside the container
CUse a package manager
DManually add your app and dependencies
Which command runs your app in a scratch-based container?
ARUN /myapp
BCMD ["/myapp"]
CENTRYPOINT /bin/bash
DSTART /myapp
Explain what the scratch base image is and why it is useful.
Think about what is inside the image and what you need to add.
You got /4 concepts.
    Describe how to create a Dockerfile using the scratch image to run a simple binary.
    Focus on the minimal steps needed in the Dockerfile.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using the scratch base image in Docker?
      easy
      A. To automatically install dependencies for your app
      B. To include a full Linux operating system inside the container
      C. To create a minimal container with only your application and no extra files
      D. To provide a graphical user interface for the container

      Solution

      1. Step 1: Understand what scratch means

        scratch is an empty base image, meaning it has no files or OS inside.
      2. Step 2: Identify the purpose of minimal containers

        Using scratch lets you build very small containers by including only your app and its static binaries.
      3. Final Answer:

        To create a minimal container with only your application and no extra files -> Option C
      4. Quick Check:

        Minimal container = scratch base image [OK]
      Hint: Scratch means empty base image for smallest containers [OK]
      Common Mistakes:
      • Thinking scratch includes a full OS
      • Assuming scratch installs dependencies automatically
      • Believing scratch provides GUI support
      2. Which of the following is the correct way to specify the scratch base image in a Dockerfile?
      easy
      A. FROM base scratch
      B. FROM scratch
      C. FROM minimal/scratch
      D. FROM scratch:latest

      Solution

      1. Step 1: Recall Dockerfile syntax for base images

        The correct syntax is FROM <image-name> without extra words.
      2. Step 2: Check official usage of scratch

        scratch is a special empty image and is referenced simply as FROM scratch.
      3. Final Answer:

        FROM scratch -> Option B
      4. Quick Check:

        Base image syntax = FROM scratch [OK]
      Hint: Use exactly 'FROM scratch' in Dockerfile [OK]
      Common Mistakes:
      • Adding tags like :latest to scratch
      • Using extra words like 'base' or 'minimal/'
      • Incorrect syntax like FROM scratch:latest
      3. Given this Dockerfile snippet using scratch:
      FROM scratch
      COPY myapp /
      CMD ["/myapp"]
      What will happen if myapp is not a statically compiled binary?
      medium
      A. The container will fail to run because dynamic libraries are missing
      B. The container will run successfully without errors
      C. Docker will automatically add required libraries
      D. The container will run but with degraded performance

      Solution

      1. Step 1: Understand scratch image limitations

        scratch has no OS or libraries, so dynamic binaries cannot find needed libraries.
      2. Step 2: Analyze what happens with non-static binaries

        Non-statically compiled binaries depend on shared libraries which are missing, causing runtime failure.
      3. Final Answer:

        The container will fail to run because dynamic libraries are missing -> Option A
      4. Quick Check:

        Non-static binary + scratch = runtime failure [OK]
      Hint: Scratch needs static binaries; dynamic ones fail [OK]
      Common Mistakes:
      • Assuming Docker adds missing libraries automatically
      • Thinking container runs fine without libraries
      • Believing performance is only affected, not failure
      4. You wrote this Dockerfile:
      FROM scratch
      COPY app /
      CMD ["/app"]
      But when running the container, it fails with "exec format error". What is the most likely cause?
      medium
      A. The Dockerfile syntax is incorrect
      B. The app file is missing execute permissions
      C. The app binary is dynamically linked
      D. The app binary is not compiled for the container's CPU architecture

      Solution

      1. Step 1: Understand "exec format error" meaning

        This error usually means the binary format does not match the CPU architecture.
      2. Step 2: Check other possible causes

        Missing execute permission or dynamic linking cause different errors; syntax errors prevent build.
      3. Final Answer:

        The app binary is not compiled for the container's CPU architecture -> Option D
      4. Quick Check:

        Exec format error = wrong CPU architecture binary [OK]
      Hint: Exec format error means binary architecture mismatch [OK]
      Common Mistakes:
      • Confusing exec format error with permission issues
      • Assuming dynamic linking causes exec format error
      • Thinking Dockerfile syntax causes this runtime error
      5. You want to build a minimal Docker container using scratch that runs a Go application. Which steps should you follow to ensure the container runs correctly?
      hard
      A. Compile the Go app statically, use FROM scratch, copy the binary, and set CMD
      B. Use FROM scratch, copy the Go source code, and run go run inside the container
      C. Use FROM alpine, install Go, and compile the app inside the container
      D. Compile the Go app dynamically, use FROM scratch, copy the binary, and set CMD

      Solution

      1. Step 1: Compile Go app statically

        Static compilation bundles all dependencies, so the binary runs without extra libraries.
      2. Step 2: Use FROM scratch and copy binary

        Since scratch is empty, copy the static binary and set the command to run it.
      3. Final Answer:

        Compile the Go app statically, use FROM scratch, copy the binary, and set CMD -> Option A
      4. Quick Check:

        Static binary + scratch base = minimal working container [OK]
      Hint: Static binary + FROM scratch + copy + CMD = minimal container [OK]
      Common Mistakes:
      • Trying to run source code inside scratch
      • Using dynamic binaries with scratch
      • Using alpine base instead of scratch for minimal size
      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