Docker uses a client-server architecture, where:
In addition to this, Docker leverages a container runtime which serves as engine behind the container solutions. It is also the the intermediate layer between the host and the containers.
The docker daemon handles the docker objects, which includes the docker ../../images, containers, and networking. It exposes a REST API that the client consumes over Unix socket or a network interface. Major functions:
The docker binaries are basically the docker commands. This means when you’re using issuing the docker commands, you’re using the client. It’s basically the primary way to interact with the Docker daemon.
Under the hood, the container engine takes a container image and turns it into a container. It typically containes a runtime, a CLI tool, and sometimes a daemon.
A more detailed flow is described below:
The container runtime is a specific part of the container engine.
This is the default implementataion defined by OCI runtime specs. It’s responsible for:
This is a code originally from the daemon but is removed.