The Docker architecture is designed by layered structure, which is described below:
โDocker_Client
โDocker_daemon / Docker_Host
โDocker_registry
๐๐ก๐ ๐๐จ๐๐ค๐๐ซ ๐๐ฅ๐ข๐๐ง๐ญ
The Docker client (docker) is the primary way that many Docker users interact with Docker. When you use commands such as ๐ ๐๐๐๐๐ ๐๐๐, the client sends these commands to dockerd, which carries them out. The docker command uses the Docker API. The Docker client can communicate with more than one daemon.
๐๐ก๐ ๐๐จ๐๐ค๐๐ซ ๐๐๐๐ฆ๐จ๐ง / ๐๐จ๐๐ค๐๐ซ ๐ก๐จ๐ฌ๐ญ
The Docker daemon (dockerd) listens for Docker API requests and manages Docker objects such as images, containers, networks, and volumes. A daemon can also communicate with other daemons to manage Docker services.
๐๐จ๐๐ค๐๐ซ ๐ซ๐๐ ๐ข๐ฌ๐ญ๐ซ๐ข๐๐ฌ
A Docker registry stores Docker images. Docker Hub is a public registry that anyone can use, and Docker is configured to look for images on Docker Hub by default. You can even run your own private registry.
When you use the ๐ ๐๐๐๐๐ ๐๐๐๐ or ๐ ๐๐๐๐๐ ๐๐๐ commands, the required images are pulled from your configured registry. When you use the ๐ ๐๐๐๐๐ ๐๐๐๐ command, your image is pushed to your configured registry.