Cloud Parts

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 Dockerfile and 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 →

How it fits with other technologies

What uses Docker

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.2

See it in a real stack

No architecture uses Docker yet. Drop it into the playground and wire it up yourself.Open playground →

Worth exploring

Article· October 2020Is there a way to containerized a normal AWS Lambda function?Stack Overflow question by Sivvie LimA newcomer asks how to move an SNS-triggered Lambda function into a container on EKS. The answers, from October 2020, point to the 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.
All resources →
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 Dockerfile instruction 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

  1. 2013

    Shown at PyCon and open-sourced in March; dotCloud becomes Docker Inc.

  2. 2014

    libcontainer replaces LXC in 0.9; Docker 1.0 ships June 9

  3. 2015

    Open Container Initiative launched June 22 with Docker’s format and runc

  4. 2017

    The Moby project becomes the open upstream for Docker’s engine

  5. 2021

    Docker Desktop requires a paid plan for larger companies

  6. 2025

    Engine 29 makes the containerd image store the default

Sources9 · facts checked 5 October 2026

Improve this page on GitHub