Docker
A containerization platform that packages applications and their dependencies into portable, reproducible units.
Docker standardized how software is packaged and deployed, making it possible to run applications consistently across development, staging, and production environments. Container knowledge is now expected of most backend engineers, not just DevOps specialists — understanding Docker is prerequisite to working with Kubernetes and modern deployment pipelines.
Typical time to job-readiness: ~3 weeks.
Learning Docker
Beginner
Understand containers vs VMs, write a Dockerfile for an existing app, and use docker-compose for local multi-service development.
Intermediate
Multi-stage builds for smaller images, secure secret handling, container registries (ECR, Docker Hub), and container networking between services.
Advanced
Container security (least-privilege, image scanning), resource limit tuning, and debugging running containers in production. Docker is a prerequisite for any Kubernetes interview.
Key concepts
- Container — a process with its own filesystem and namespace, isolated from the host
- Image — a read-only snapshot of the filesystem; containers run from images
- Dockerfile — instructions for building an image layer by layer
- docker-compose — run multi-container apps locally with a single YAML config
- Layers and caching — each Dockerfile instruction is cached; order matters for build speed
- Port mapping and volumes — expose container ports and mount host directories
Common interview topics
- What is the difference between a container and a virtual machine
- Explain how Docker layers work and why they matter for image size
- What is a multi-stage build and why would you use one
- How do you pass secrets to a Docker container securely
- How would you debug a container that exits immediately after starting