The Docker architecture is designed by layered structure, which is described below:
―Docker_daemon / Docker_Host
𝐓𝐡𝐞 𝐃𝐨𝐜𝐤𝐞𝐫 𝐜𝐥𝐢𝐞𝐧𝐭
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.