Every application/product we use follows client-server architecture either directly or indirectly. Take an example of facebook, twitter, gmail etc. all these applications are based to client-server architecture.
Let's try and understand what do we mean by a client and server. There can be many literal interpretations of the terms client and server when it comes to it's usage, but in general all those means the same.
Client is sort of a gateway or an interface which let's you use the product. It is a layer between a user and some complex implementation which runs the product, Client takes care of providing the user with abstracted layer of interface through which user ends up using the product.
Server is nothing but a compute compatible machine which runs the product and gets requests from clients, Which in turn is recepted and decoded to understand what is it client wants. Servers are responsible for running the product and perform the tasks requested by the client.
Now, we understand what client and server means in computing. Let's dive into what is a Docker Client and Docker Server.
Image courtesy: https://www.xenonstack.com/blog/docker-application-solutions/
Docker as we all know by does all things contatiners. It provides a container runtime, It is manages contianer storage, networks, image builds and many other services. No doubt it requries compute power to perform all these tasks. Docker server is nothing but a compute instance (VM, Personal Computer etc.) which is responsible for runing docker daemon process which in turn manages all the services provided by docker.
To communicate with the docker daemon to execute a certain task like runing a contaienr, build some image are all done via docker client. Now, you'd have probably guesed it, The Docker CLI. Along with Docker CLI, Docker daemon also exposes a REST API which can be used to programmatically access services exposed by the daemon.
A subset view of docker's client and server.
Image courtesy: https://docs.docker.com/engine/docker-overview/
Note:
Soul purpose of this tutorial was to understand the docker client-server architecture, There are several other topics to cover like, What is Docker Registry? These topics among some other advanced ones are explained in future tutorials, Keep following. Happy Dockerizing!