How does Docker to run a container?
A client (eg Docker CLI) calls the Dockerd service using the Docker API
Dockerd performs the management of the API, orchestration and communications, delegating container life cycle functions to Containerd
Containerd performs the functions of volume, network, images management and container life cycle
Finally RunC executes the container
Source: Docker components explained
How does Kubernetes to run a container?
A client calls the ApiServer service using the Kubernetes API
Kubernetes takes decision over the node on which will be executed the POD and calls the agent (Kubelet) that runs on it
The Kubelet uses the Container Runtime Interface to communicate with the containers lifecycle manager
Container standards to be considered for MicroVMs (2/2)
The container standards over execution are managed by the Open Container Initiative, a Linux Foundation proyect which has two specifications
OCI runtime specification: Defines how the execution environment, configuration and container lifecycle must be
OCI image format specification: Defines configuration, layers and manifest of an image should be, the objective of both standards is that any tool that works with containers can use the images generated by any other.
Source: Open Container Initiative
Source: Configuration, execution environment, and lifecycle of a container
Source: Image Format Specification