Docker has the following three components:
- Docker client: Docker client is a command-line program that actually talks with the Docker daemon residing inside the Docker host through either socket based communication or communication over REST APIs. A Docker client with CLI options is used to build, package, ship, and run any Docker container.
- Docker host: Docker host is basically a server-side component that includes a docker daemon, containers, and images:
- Docker daemon is a server-side component that runs on the host machine and contains the script for building, packaging, running, and distributing Docker containers. Docker daemon exposes RESTful APIs for the Docker client as one of the ways to interact with itself.