docker可以根据需要在容器之间共享内存和CPU吗?

时间:2016-05-21 04:43:33

标签: memory docker virtualization docker-compose

如果我运行多个具有突发内存和CPU利用率的docker容器,他们是否能够使用主机的全部容量?或者它们是否会受限于各个容器定义的CPU和内存限制?

例如:

如果我在不相交的时间运行3个容器,每天一次突发到1GB内存。

同样地,如果相同的容器反而是CPU重,并且在不相交的时间每天突破到1CPU单元。

我可以在只有1.1GB内存或1.1 CPU单元的盒子上运行这3个容器吗?

3 个答案:

答案 0 :(得分:5)

Docker容器不是虚拟机, 它们在主机操作系统内核上运行,因此没有管理程序的魔力。

从内核的角度来看,在容器内运行的进程与主机进程没有太大区别。他们只是高度孤立。

内存和cpu调度将由" host"处理。您在docker设置上设置的是CPU份额,为某些容器提供优先级和边界。

所以是的,如果在处理峰值之后正确释放使用的内存,那么具有休眠进程的容器将消耗大量的CPU /内存,否则,内存将被换出,而不会对性能产生太大影响。

实例化docker容器只会占用内存资源。只要没有进程正在运行,您将看到它的CPU使用率为零。

答案 1 :(得分:0)

我建议您查看cgroups文档,实际上是cgroups v2的文档,因为它们的结构比v1 docs更好。有关cpu和内存控制器的信息,请参阅第5章:https://www.kernel.org/doc/Documentation/cgroup-v2.txt

答案 2 :(得分:0)

如果您不需要在容器启动时明确指定--memory和--cpu-shares选项,则容器将具有可在实例上使用的所有cpu共享和内存。如果没有其他进程消耗资源,则容器可以使用所有可用的cpu和内存。

理论上,您应该能够在实例上运行3个容器。 确保没有容器占用内存或CPU资源。