DevLearn
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