Docker
The tool that made containers mainstream: build an image from a Dockerfile, then run it anywhere.
- What it is
- Containers
- Type
- Open source
- Made by
- Docker, Inc.
- License
- Apache 2.0 (Docker Engine); Docker Desktop is proprietary
- Facts checked
- 5 October 2026
What it is
Docker is a client and a server. The docker command sends requests over a REST API to the Docker daemon, dockerd, which builds images, pulls and pushes them to registries such as Docker Hub, and starts containers. An image is built from a Dockerfile: each instruction adds a read-only layer, so a rebuild only redoes the layers after the first line that changed, and hosts only download layers they don’t already have.
The pieces come in two packages. Docker Engine (the daemon, CLI and runtime) is open source under Apache 2.0, built from the Moby project, and runs natively on Linux servers. Docker Desktop bundles the engine with Compose, a local Kubernetes and a GUI for macOS, Windows and Linux desktops, and runs the engine inside a Linux VM, even on Linux. Docker Desktop is free for personal use, education, non-commercial open source and companies with fewer than 250 employees and under $10 million in annual revenue; larger companies need a paid subscription.
Why teams pick it
- The
Dockerfileand the image format are the de facto standard; every container platform runs the result - Layer caching makes rebuilds and pulls fast when only your code changes
- Compose describes a multi-container dev setup (app, database, cache) in one YAML file
- Docker Hub hosts a curated set of Docker Official Images, plus many more, to build on
Watch out for
- A single host: Docker alone doesn’t spread containers across machines or replace dead ones
- Containers share the host kernel, so isolation is weaker than a VM or microVM
- The daemon traditionally runs as root, and access to its socket is effectively root on the host; Podman runs the same images without a daemon
- Docker Desktop needs a paid subscription in companies with 250 or more employees or $10 million or more in revenue
Alternatives
What all containers have in common →
AWS FargateAWSRuns ECS tasks and EKS pods without servers: you size each task, AWS finds the machine.
gVisorOpen sourceA Linux kernel reimplemented in Go that runs in user space, so a container’s system calls never reach the host kernel directly.How it fits with other technologies
What uses Docker
- Gois the implementation language ofDocker
- Visual Studio Codedevelops inside containers run byDocker
- Azure App Serviceruns custom containers built withDocker
- Dokkubuilds and runs apps as containers withDocker
- Fly.iodeploys images built withDocker
- Google App Engineruns flexible apps in containers built withDocker
- Renderdeploys Dockerfiles and images built withDocker
- HashiCorp Vagrantcan run environments as containers withDocker
- Microsoft Hyper-Visolates Windows containers run byDocker
- QEMUemulates other CPUs for multi-arch builds inDocker
- Kata Containersplugs in as a runtime forDocker
- smolvmboots OCI images built withDocker
- Google Cloud Runruns container images built withDocker
- gVisorplugs in as the runsc runtime forDocker
- Podmanreplaces the CLI and socket API ofDocker
- HashiCorp Nomadruns containers throughDocker
- Kubernetesruns container images built withDocker
- kindruns each cluster node as a container inDocker
- minikuberuns its nodes as containers inDocker
- NGINXis commonly run as a container withDocker
- Prefectcan run each flow run in a container withDocker
- Alibaba Cloud PolarDBships a local PostgreSQL edition image forDocker
- Chromacan run as a server inDocker
- YAMLdescribes multi-container apps (Compose) forDocker
- Dagstercan launch each run in a container withDocker
- GitHub Actionsbuilds and pushes container images withDocker
- HashiCorp Packerbuilds and pushes container images withDocker
- LocalStackships as a container image forDocker
A Dockerfile for a small Python web service · dockerfile
FROM python:3.13-slim
WORKDIR /app
# dependencies first, so this layer is cached until requirements.txt changes
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
USER 1000
EXPOSE 8000
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "app:app"]
# docker build -t api:1.4.2 . && docker run -p 8000:8000 api:1.4.2See it in a real stack
No architecture uses Docker yet. Drop it into the playground and wire it up yourself.Open playground →Worth exploring
lambci/docker-lambda images (since deprecated in favour of AWS’s official Lambda base images) and to Knative; read it mainly for the question, which is a common one, rather than for current tooling.Where it came from2013–2025
Linux had the raw parts for containers by the late 2000s: kernel namespaces and control groups, wrapped by a tool called LXC. They were fiddly, though, and there was no standard way to package an app with its libraries so it ran the same on a laptop, a test box and a production server. At dotCloud, a platform-as-a-service start-up from Y Combinator’s summer 2010 batch, an internal project set out to fix that.
Solomon Hykes, dotCloud’s founder, showed the project publicly as Docker in a lightning talk at PyCon in Santa Clara on March 15, 2013, and its first release, 0.1.0, was tagged that month. It gave LXC a simple command line and, more importantly, a portable image format. dotCloud renamed itself Docker Inc. later that year. Docker 0.9 replaced LXC with its own Go library, libcontainer, in March 2014, and 1.0 shipped on June 9, 2014.
Docker made the container image the normal way to ship server software. To keep that from depending on one company, Docker and CoreOS launched the Open Container Initiative in 2015, and Docker split its engine into open pieces such as the runc runtime and the Moby project.
Why it’s built this way
- Images built from stacked, read-only layers
- Each
Dockerfileinstruction produces a layer that can be cached and shared. Rebuilds only redo what changed and servers only download layers they don’t already have, which made shipping whole environments practical. - Replacing LXC with its own libcontainer
- LXC behaved differently across versions and Linux distributions. A pure Go library calling the kernel’s container features directly cut the moving parts and, in Hykes’s words, “delivered such a boost to stability” that it became the default.
- Giving the format and runtime to an open standard
- In 2015 Docker donated its container format and the runc runtime to the OCI under the Linux Foundation, so that container images and runtimes from different vendors follow one open specification.
Timeline
- 2013
Shown at PyCon and open-sourced in March; dotCloud becomes Docker Inc.
- 2014
libcontainer replaces LXC in 0.9; Docker 1.0 ships June 9
- 2015
Open Container Initiative launched June 22 with Docker’s format and runc
- 2017
The Moby project becomes the open upstream for Docker’s engine
- 2021
Docker Desktop requires a paid plan for larger companies
- 2025
Engine 29 makes the containerd image store the default
- Docker Blog: Docker 0.9, execution drivers and libcontainer (Mar 2014)
- Open Container Initiative: About
- Y Combinator: Docker (Summer 2010 batch)
- PyVideo: Solomon Hykes, The future of Linux Containers (PyCon US, Mar 2013)
- moby/moby on GitHub: tag v0.1.0 (Mar 2013)
- Docker press release: dotCloud, Inc. is now Docker, Inc. (Oct 2013)
- moby/moby on GitHub: tag v1.0.0 (Jun 2014)
- Docker Blog: Introducing the Moby Project (Apr 2017)
- Docker Blog: Docker is updating and extending our product subscriptions (Aug 2021) · archived copy, original
- Docker docs: Engine 29 release notes (containerd image store default, Nov 2025)
Sources9 · facts checked 5 October 2026
- Docker docs: Docker overview (client, daemon, REST API)
- Docker docs: Docker build cache (layers)
- Docker docs: Docker Engine (Apache 2.0 licence)
- Docker docs: Docker Desktop
- Docker docs: Install Docker Desktop on Linux (runs a VM)
- Docker docs: Docker Desktop license agreement
- Docker docs: Trusted content on Docker Hub (Docker Official Images)
- Docker docs: Docker Engine security (daemon attack surface)
- Moby project on GitHub