我最近开始学习docker,似乎大部分工作都是由Linux内核完成的,使用名称空间和cGroup.
有几件事让我感到困惑:
-
命名空间和cgroup之间有什么区别?它们处理的不同用例是什么?
-
docker在这上面实现了什么以获得人气?
-
我想知道这些功能的内部 struct ,以及它们是如何实现的.
我最近开始学习docker,似乎大部分工作都是由Linux内核完成的,使用名称空间和cGroup.
有几件事让我感到困惑:
命名空间和cgroup之间有什么区别?它们处理的不同用例是什么?
docker在这上面实现了什么以获得人气?
我想知道这些功能的内部 struct ,以及它们是如何实现的.
这两个概念的正确联系已在PR 14307中确定:
在引擎盖下,Docker由以下组件构成:
Linux内核的100和
namespaces
功能
与:
简而言之:
更多信息请参见Jérôme Petazzoni页的"Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic".
cGroup涉及资源计量和限制:
名称空间为进程提供了自己的系统视图
多个名称空间: