Docker is a platform for containerization — packaging an application together with all its dependencies into a portable container that runs consistently anywhere. It solves the classic "it works on my machine" problem by making environments reproducible.
The problem: inconsistent environments
WITHOUT containers:
→ an app works on the developer's machine but fails in test/production
→ different OS, library versions, configs, missing dependencies → "works on my machine"
→ setting up environments is manual, error-prone, and inconsistent
