Docker Architecture
The architecture used by Docker is client-server model. When building, running, and distributing the docker containers, the Docker daemon and the Docker client communicate. A remote connection can be established between the Docker client and daemon, or they can operate simultaneously on the same system. A UNIX socket or a network is used by the docker client and daemon to communicate with one another via REST API.

What is the Docker Daemon?
The Docker daemon manages all services by talking with the other daemons. It handles docker objects such as images, containers, networks, and volumes with the help of Docker’s API queries/requests.
What is the Docker Client?
Docker users can interact with their containers via the docker client. The Docker command makes use of the Docker API. The Docker client can communicate with several daemons. When a docker client runs a docker command from the docker terminal, then the terminal sends instructions to the daemon. The Docker daemon gets those instructions from the docker client in the form of a command and a REST API request.
The primary goal of the Docker client is to provide a way to direct the pull of images from the docker registry and run them on the docker host. Clients commonly use the commands docker build, docker pull, and docker run.
What is a Docker Host?
A Docker host is a machine that is responsible for running several containers. Its components include the Docker daemon, images, containers, networks, and storage.
What is a Docker Registry?
The Docker registry stores all of the Docker images. There is a public registry which is known as a docker hub that can be used by anyone. We can run our private registry also. We can use the docker run or docker pull commands to pull the necessary images from our configured registry. Images are pushed into the defined registry using the docker push command.
What is a Docker Image?
A Docker image is a template that contains the instructions for creating a container. It includes the application code, dependencies, and configurations required to run the application. Images are stored in a Docker registry, such as Docker Hub, and can be pulled down to a local machine to create a container.
What is a Docker Container?
Containers are created from docker images. A Docker container is a runtime instance of a Docker image. It provides a isolated environment for the application to run in, with its own process space, network stack, and file system. We can start, stop, delete, or relocate containers using the Docker API or command line interface. A container can access only those resources which are defined in the image unless additional access is defined during the building of an image in the container.