前面我们提到过,容器能够得以实现,主要依赖于内核的种的NameSpace,CCgroups
NameSpace(命名空间)
CCgroups(控制组)控制NameSpace(命名空间)来进行资源的分配
1、默认情况下一个Docker中的一个Container是没有资源限制的,调度器能够Container调度多少资源,它都能 吃掉
2、Docker provides 提供了控制Memory,CPU,block IO,从这三个维度来进行控制的,其实它正真能控制前两个Memory,CPU,【我们知道Memeory是不可压缩资源,当一个容器内的进程耗尽CPU时候再次申请CPU,有可能会因为OOM而被kill掉;而CPU没关系【可压缩资源】,你耗费的太多,内核使劲压缩,不会分配给你】
3、这些控制都依赖于LInux capabilites
Memory
Linux是如何执行OOME的?
在Linux主机上如果内核探测到当前宿主机,没有足够的内存可用,用于执行重要的功能就会抛出OOME (Out Of Memory Exceptio