How do you reduce Docker image size?
Interviewer Expectations for this Question
01
Core Competency
Assesses fundamental understanding of Docker conventions, runtime behavior, and memory/performance considerations.
02
Evaluation Criteria
Hiring managers look for precision, avoidance of ambiguous jargon, and ability to explain trade-offs under real production conditions.
Comprehensive Model Answer
Verified Solution
Attack the layers, base image, and build context.
- Use a minimal base: alpine, distroless, or scratch for static binaries.
- Use multi-stage builds: compile in one stage and copy only artefacts.
- Combine RUN commands and clear package caches in the same layer:
RUN apt-get update && apt-get install -y --no-install-recommends curl \
&& rm -rf /var/lib/apt/lists/*
- Add a .dockerignore to exclude .git, node_modules, and build output from the context.
- Remove dev dependencies in the final stage, for example npm ci --omit=dev or pip install --no-cache-dir.
- Copy only the files the runtime needs.
- Inspect with docker image history or the dive tool to find the largest layers.
docker images app:1.0
docker history app:1.0
Smaller images pull faster, start faster, and expose fewer vulnerabilities.
Candidate Response Strategy & Interview Tips
- Start with a concise one-sentence summary: Deliver a direct, confident answer first before expanding into nuances.
- Demonstrate real-world trade-offs: Discuss where this approach excels and when you would avoid it in production systems.
- Discuss complexity & edge cases: Proactively explain time/space complexity or boundary conditions (null values, scale limits).
- Prepare for interviewer follow-ups: Technical hiring panels frequently probe deeper into concurrency, backward compatibility, or alternative libraries.