Docker Architecture

Docker follows Client-Server architecture, which includes a few components.
Docker Client
- Docker client (user) uses commands and REST APIs to communicate with the Docker Daemon (Server).
- When a client runs any docker command on the docker client terminal, the client terminal sends these docker commands to the Docker daemon.
- Docker daemon receives these commands from the docker client in the form of command and REST API’s request.
- Docker Client uses Command Line Interface (CLI) to run the following commands- docker build, docker pull, docker run, etc.
Docker Host
- Docker Host is used to providing an environment to execute and run applications.
- It contains the docker daemon, images, containers, networks, volumes, and storage.
Docker Daemon
- Docker Daemon is a docker service that interacts with the operating system and performs all kinds of tasks.
- A persistent background process that manages Docker images, containers, networks, storage, and volumes.
- The Docker daemon constantly listens for Docker API requests and processes them.
- Docker Engine exposes REST API to interact with the Docker client.
Docker Registry
- It stores manage and stores the Docker images.
- Docker Hub is a public registry that anyone can use.
- Docker is configured to use images on Docker Hub by default.
- You can run your own registry on it.
- you can create one private free repository when you create an account on the Docker hub.
- Common commands when working with registries include:
docker pushdocker pulldocker run