The chroot jail is the foundation of any container used to isolate processes from the root directory and present only the contents of a specific directory to the process.
In addition to the two core components of the Docker architecture, it also uses the following features:
Namespaces allow for a high-level process isolation of a system’s resources. These are logical separation of container workloads. Here are some types of namespaces:
Handles process isolation (PID: Process ID). This means that each namespace has its own process ID.
Isolates the network stack and manages the network interfaces. Each namespace has its own private set of IP addresses, firewall, routing tables, etc.
Allows processes to be isolated from SysV interprocess communication.
Manages the filesystem mountpoints.
UTS or Unix Timesharing System isolates the hostname, kernel, and version identifiers.
This is used by Docker to limit resource allocation. This ensures that a process doesn’t consume the entire resources of a system.
The Union filesystem upkeeps the overall sizes of the containers. It starts with a base image and then merges in any changes.
How it works: