Container是用namespace 来做隔离的,那么问题来了
如果我在一台服务器上, 使用同一个应用的image (比如 WordPress)起了 n个 container, 那么这个服务器满载的时候性能 和 同样一台服务器只用一个 Container 处理时满载的性能有什么区别?
按照Container的说法,runtime overhead 很低,是不是这两个场景性能差不了太多 ? 求高手解答
其实和一台物理机器跑多个虚拟机类似。
一般来说,性能要低于多个机器跑多个container,但是比单个的吞吐要高。
这是因为不同的程序交替使用各种资源,比如第一个程序用cpu的时候另一个程序用IO,那么它们的运行效率不变,或者某个程序用不了所有的cpu核心,那么空闲的核心可以跑另一个程序。但是毕竟在一台机上,有时候会冲突。
和虚拟机还是有区别的吧, 虚拟机相当于又起了一套操作系统,分配了内存和CPU,这个本身的损耗就大很多
或者是问题这么问,一个 应用跑起来占用 2G内存, 主机有16G内存,能起多少个Docker Container ?
我说类似,没有说相同。
虚拟机和docker类似在于,如果你把操作系统也看成是容器里应用的一部分,那么它和docker其实就是一回事了。
一个应用2GB,一共16GB内存,可以跑超过8个。
你说的2G是峰值内存使用,而应用不可能时时刻刻都用那么多。总体上不超过16G就可以了。
一个应用占用的内存,主要是上层隔离等,下面是共享的,跟比虚拟机更上层点,也简单