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

如果我正在运行多个Docker容器,内存和CPU使用率都很高,那么他们能够使用主机的全部容量吗? 还是将它们限制在单个容器定义的CPU和内存限制?

例如:

如果我运行的是3个容器,每天只有1GB的内存,在不相交的时间。

同样,如果那些相同的容器代替了CPU,并且在不相交的时候每天突发到1CPU单元。

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

Docker容器不是虚拟机,它们在宿主操作系统内核中运行,所以没有虚拟机pipe理器的魔力。

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

内存和CPU调度将由“主机”处理。 在docker设置上设置的是CPU的份额,给一些容器优先和界限。

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

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

我会build议审查cgroups文档,实际上是cgroups v2的文档,因为它们的结构更好,v1文档。 有关CPU和内存控制器,请参见第5章: https : //www.kernel.org/doc/Documentation/cgroup-v2.txt

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

理论上你应该能够在实例上运行3个容器。 确保非容器绑定内存或cpu资源。