What and Why
Your app works on your laptop. It fails on the staging server. The investigation: different Python version, missing system library, environment variable set in one place but not another. You fix it by adding a setup doc that's already out of date by the time someone else reads it.
Containers solve this by packaging the application and its runtime dependencies together into a single, portable unit. A container image bundles your binary, its libraries, its config structure, and its expected OS — everything except the kernel. Run the image anywhere Docker runs and you get the same behavior.
Docker is the dominant container runtime. You'll encounter it when:
- Shipping applications to production servers
- Standardizing dev environments across a team
- Building the artifact stage of a CI/CD pipeline
- Running dependencies (Postgres, Redis, third-party APIs) locally without installing them
Core Concepts
Containers vs. Virtual Machines
Both isolate workloads. The difference is where the boundary sits.
In the full tutorial
- How It Works in Practice
- Common Mistakes
- Tradeoffs
- Quick Reference