Architecture
Docker Architecture
Understand Docker's client-server architecture and how containers work internally.
Docker Architecture Overview
┌─────────────────────────────────────────────────────────────────────────────┐ │ DOCKER ARCHITECTURE │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────────┐ REST API ┌───────────────────────────┐ │ │ │ DOCKER │ ──────────────────────► │ DOCKER DAEMON │ │ │ │ CLIENT │ ◄────────────────────── │ (dockerd) │ │ │ │ (docker) │ │ │ │ │ └──────────────┘ │ ┌─────────────────────┐ │ │ │ │ │ CONTAINERD │ │ │ │ ┌──────────────┐ │ │ ┌─────────────┐ │ │ │ │ │ DOCKER │ ──────────────────────► │ │ │ RUNC │ │ │ │ │ │ BUILDX │ │ │ │ (OCI Runtime) │ │ │ │ └──────────────┘ │ │ └─────────────┘ │ │ │ │ │ └─────────────────────┘ │ │ │ ┌──────────────┐ │ │ │ │ │ DOCKER │ ──────────────────────► │ ┌─────────────────────┐ │ │ │ │ COMPOSE │ │ │ IMAGE STORAGE │ │ │ │ └──────────────┘ │ └─────────────────────┘ │ │ │ │ │ │ │ │ ┌─────────────┐ │ │ │ │ │ NETWORK │ │ │ │ │ └─────────────┘ │ │ │ └───────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ HOST OPERATING SYSTEM │ │ │ │ (Linux Kernel + Namespaces)│ │ │ └───────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘
Docker Client (docker)
- Command-line interface (CLI)
- Sends commands to Docker daemon via REST API
- Can communicate with remote daemons
- Primary user interface for Docker
Docker Daemon (dockerd)
- Background service (daemon process)
- Manages Docker objects (images, containers, networks)
- Listens for API requests
- Can communicate with other daemons
containerd
- High-level container runtime
- Pulls images, creates containers
- Manages container lifecycle
- Hands execution to runc
runc (OCI Runtime)
- Low-level container runtime
- OCI-compliant runtime
- Interacts with kernel features
- Actually creates containers