Oh My Algorithm
Concept GuideClient · Daemon · Registry

Docker Architecture

Typing a docker command does not make that program build a container. Docker splits into a Client that sends commands, the daemon (dockerd) on a Docker Host that actually handles images and containers, and a Registry that stores images — and the three talk over APIs. A pull is the daemon fetching an image from the registry onto the host; a run is copying that image into a live instance.

01Docker Architecture

Docker is not one program. It splits into the Client that takes your commands, the Docker Host that does the work, and the Registry that stores images. The Registry usually sits across the network.

Every docker command you type is the Client. It never builds a container itself — it sends a request to the daemon (dockerd) over a REST API. Images and containers are created entirely on the daemon side.

Run docker pull and the daemon asks the Registry for the image. The Client never talks to the registry directly — the daemon is what crosses the network.

The image it fetches is stored on the Docker Host. From now on you can start containers from it with no internet at all.

docker run copies an image into a running instance. The image is a read-only original and the container is the result of running it, so one image can back several containers.

docker build goes the other way. Send a Dockerfile to the daemon and the daemon builds an image and puts it on the Docker Host.

ClientDocker HostRegistry
1 / 6

In short

the Client only asks, the daemon does everything, and the Registry is an image warehouse across the network. That is why a failing docker command means checking the daemon first.

docker info          # is the daemon alive?
docker context ls    # which host am I pointed at?
docker image ls      # what images are on the host?
Read nextImage Layers →

02 Understand It Simply

For Everyone
🔑How It Works

Docker splits into three parts: the Client that sends commands, the daemon that builds images and runs containers, and the Registry that stores images. The Client never talks to the registry directly — it only asks the daemon.

💡In Plain Words

The docker in your terminal is a client that builds a request and sends it to the daemon.

The daemon manages images, containers, networks and volumes, so nothing works when it isn't running.

An image is a read-only original and a container is an instance of running it, which is why one image can back several containers.

Client and daemon may sit on the same machine or be separated across a network.

📍Where It's Used
  • Checking the daemon first when docker commands fail
  • pointing a client at a remote host
  • telling images and containers apart
  • and deciding whether to run a private registry

03 Frequently Asked Questions

FAQ
What is Docker Architecture?+

Typing a docker command does not make that program build a container. Docker splits into a Client that sends commands, the daemon (dockerd) on a Docker Host that actually handles images and containers, and a Registry that stores images — and the three talk over APIs. A pull is the daemon fetching an image from the registry onto the host; a run is copying that image into a live instance.

Where is Docker Architecture used?+

Checking the daemon first when docker commands fail, pointing a client at a remote host, telling images and containers apart, and deciding whether to run a private registry.

What's a simple analogy for Docker Architecture?+

Docker splits into three parts: the Client that sends commands, the daemon that builds images and runs containers, and the Registry that stores images. The Client never talks to the registry directly — it only asks the daemon.