Docker

Docker is a toolchain for packaging and running Linux containers. It wraps an application together with its dependencies into a portable image, which can run on any host with a compatible kernel and a container runtime.

How it works

A Dockerfile is a recipe for building an image: a base layer, plus instructions to copy files, install dependencies, and configure the entry point. The result is an immutable, layered image stored in a registry (Docker Hub, GitHub Container Registry, AWS ECR). A container is a running instance of an image, isolated from other processes by Linux namespaces (PID, network, mount) and resource-constrained by cgroups.

Modern Docker is split into the CLI, the builder (BuildKit), and the runtime (containerd). Docker Compose orchestrates multi-container applications on a single host.

Variants

  • Docker Desktop. Developer experience for macOS and Windows.
  • Docker Engine. The daemon and CLI on Linux servers.
  • Alternatives. Podman (daemonless, rootless), containerd (low-level runtime, used by Kubernetes), nerdctl, Buildah, Colima.

Origin

Released in 2013 by Solomon Hykes at dotCloud, which was renamed Docker Inc. shortly after. The container format and runtime were donated to the Open Container Initiative (OCI) in 2015.

Subscribe to Sahil's Playbook

Clear thinking on product, engineering, and building at scale. No noise. One email when there's something worth sharing.
[email protected]
Subscribe
Mastodon