Docker is the container platform, launched in 2013 by Solomon Hykes, that brought containers to mainstream software development. Docker did not invent containers—Linux had LXC, namespaces, and cgroups for years—but it packaged them with a friendly CLI, a standard image format, a registry (Docker Hub), and a compelling workflow ("build, ship, run") that took the industry by storm.
The main components are dockerd (the daemon running as root that manages containers), docker (the CLI you interact with), and containerd (the lower-level runtime, now an independent CNCF project). Alongside these are Dockerfile (build specification), images (layered filesystem snapshots), and Docker Hub (public image registry).
docker build -t myapp .
docker run -p 8080:80 --name web myapp
docker ps -a
docker logs web
docker exec -it web sh
docker stop web
docker rm web
docker rmi myapp
Docker's rise also inspired alternatives with different trade-offs: Podman (daemonless, rootless, Red Hat), containerd (minimalist, Kubernetes-focused), CRI-O (Kubernetes-specific), and LXC/LXD (system containers rather than app containers). Docker remains dominant for local development, while Kubernetes clusters increasingly run containerd or CRI-O directly.
Related terms: Container, Container Image, Dockerfile, Podman
Discussed in:
- Chapter 17: Containers and Virtualisation — Docker: The Packaging Revolution
Also defined in: Textbook of Linux