On this page
Definition
Docker is a software platform that lets developers build, distribute and run applications inside containers, providing a consistent runtime environment across different machines.
Simple explanation
'It works on my machine' is a classic developer problem — code that runs fine for one person fails for another because of subtle differences in installed software versions. Docker solves this by packaging an application together with its exact dependencies into a single container image.
That image can then be run identically on a developer's laptop, a testing server or a production cloud environment, because it carries its own environment with it rather than relying on whatever is already installed on the host machine.
Why it matters
Docker made containers practical and popular, becoming the de facto standard tool for packaging applications consistently. It underpins much of modern cloud deployment, CI/CD pipelines and microservices architecture.
For businesses, teams using Docker can generally deploy more reliably and onboard new developers faster, since the environment is defined in code rather than tribal knowledge.
How it works
- 1DefineA Dockerfile specifies the application's base environment and dependencies.
- 2BuildDocker builds that definition into a reusable container image.
- 3RunDocker starts a container from the image, an isolated running instance of the application.
- 4ShareImages are pushed to a registry so others can pull and run the exact same environment.
Real examples
Products named for illustration only. Inclusion is not an endorsement.
- Docker DesktopThe application developers install locally to build and run containers.
- Docker HubA public registry for sharing and downloading container images.
- Docker ComposeDefines and runs multi-container applications from one configuration file.
- Kubernetes (paired with Docker images)Orchestrates many containers across a cluster of machines.
Advantages
- Provides a consistent runtime environment across development, testing and production.
- Packages dependencies alongside the application, avoiding version mismatches.
- Large ecosystem of pre-built images for common software.
- Integrates well with CI/CD pipelines and cloud deployment tools.
Limitations
- Adds a learning curve around Dockerfiles, images and networking concepts.
- Container images can grow large if not carefully optimised.
- Not a full virtual machine — shares the host's kernel, which has security implications.
- Running Docker itself consumes system resources, which matters on constrained machines.
Common misunderstandings
- ClaimDocker and virtual machines are the same thing.RealityDocker containers share the host operating system's kernel, making them lighter and faster to start than full virtual machines.
- ClaimDocker is the only way to use containers.RealityDocker popularised containers, but other tools such as Podman can build and run the same container format.
Frequently asked questions
Is Docker free to use?
Docker Engine is free and open source; Docker Desktop has free and paid tiers depending on company size and usage.
Do I need Docker to deploy an app?
No, but it makes deployment more consistent and is widely supported by cloud platforms.
What is a Dockerfile?
A text file with instructions describing how to build a container image for an application.
Can Docker run on Windows and Mac?
Yes, Docker Desktop supports Windows and macOS, in addition to native Linux support.
Is Docker the same as Kubernetes?
No, Docker builds and runs individual containers; Kubernetes orchestrates and manages many containers across machines.
The Tool Money Lab perspective
Docker's real contribution was standardising a format and workflow for containers that the whole industry could rally around, rather than inventing the underlying concept.
For teams evaluating whether to adopt it, the payoff is clearest once you have more than one environment to keep in sync — a solo developer with a single deployment target may not need it immediately.
Conclusion
Docker gives developers a practical, widely supported way to package applications with their dependencies and run them consistently anywhere.
It has become foundational to modern software delivery, sitting quietly underneath much of the cloud infrastructure that businesses rely on daily.