Docker as a whole is composed of so many tools but while installing or using docker, the one thing that need the attention to understand is docker daemon.
Docker daemon is the service that runs on the host operating system as explained in the previous article on understanding Docker.
It only runs on Linux as it depends on a number of linux kernel features. You can learn more on how docker works with the linux kernel here.
The Docker Daemon exposes a Rest API & from here a number of different tools can talk to the daemon through this Rest API. Lastly the Docker CLI is the command line tool that lets us talk to the Docker daemon directly through your terminal. When we install docker, we get both docker daemon and docker CLI tools together. Its’ also defined as the client server architecture (as shown in the following diagram), docker daemon being the server and docker CLI being one of many clients.
We can use the client to manage different components of the docker daemon such as images, networks, containers and data volumes etc.
How Client( Docker CLI ) talks to the Server( Docker Daemon ) ?
Client is where we run various docker commands. The client could be installed on your laptop running windows or macosx or a server running linux.
The server running docker daemon is referred to as Docker Host. It’s very simple to connect docker client to a remote docker host through docker CLI.
Docker Daemon running a VM that uses linux & docker client is configured to connect to the remote docker host. The Docker Client and Docker host can communicate over an API, a UNIX socket or a network interface. They key point here is the Client and the host do not need to be on the same machine.
Next is the Docker Registry which is the part of the docker ecosystem.