I recently started learning docker and it seems that most of the heavy lifting is done by the linux kernel, using namespaces and cgroups.
A few things which i am finding confusing are :
What is the difference between a namespace and a cgroup ? What are the different uses cases they address ?
What has docker implemented on top this these to gain popularity ?
I would like to know the internals of these features and how they are implemented.
The proper links for those two notions have been fixed in PR 14307:
Under the hood, Docker is built on the following components:
The cgroups and
namespaces
capabilities of the Linux kernel
With:
In short:
See more at "Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic" by Jérôme Petazzoni.
Cgroups involve resource metering and limiting:
Namespaces provide processes with their own view of the system
Multiple namespaces: