我最近开始学习docker,似乎大部分繁重的工作都是由linux内核完成的,使用名称空间和cgroups.
我发现令人困惑的一些事情是:
命名空间和cgroup有什么区别?他们解决的不同用例有哪些?
Docker实现了什么以获得普及?
我想知道这些功能的内部结构以及它们是如何实现的.
Von*_*onC 82
PR 14307修正了这两个概念的正确链接:
在引擎盖下,Docker基于以下组件构建:
Linux内核的cgroup和
namespaces功能
附:
简而言之:
请参阅JérômePetazzoni撰写的 " 容器剖析:命名空间,cgroups和一些文件系统魔法 " .
Cgroup涉及资源计量和限制:
命名空间为进程提供了自己的系统视图
多个名称空间:
cgroups限制了一个进程或一组进程可以使用的资源,这些资源可以是CPU、内存、网络 I/O 或对文件系统的访问,而命名空间则限制了一组进程对系统其余部分的可见性。
访问更多详细信息Linux 内核 Cgroups 和命名空间如何使现代容器成为可能
小智 6
Cgroups(控制组)进行资源管理。
它决定了要为容器提供多少主机资源。
例如:- 我们在 docker-compose yaml 文件中定义资源以创建如下服务:
资源:
限制:
CPU:“0.1”(100 毫核)
内存:50M
在此示例中,我们明确要求 cgroup 将这些资源分配给特定容器。
命名空间:提供进程隔离、容器的完全隔离、单独的文件系统。