内存消耗也是动态的,就像Docker容器的CPU一样

内存消耗也是动态的,就像Docker容器的CPU一样,docker,Docker,我希望通过限制CPU和内存,在单个主机上运行多个容器。如果我的主机有1024个cpu共享&我将它们分配为512和512给两个容器,这意味着如果第二个容器不使用任何cpu,那么第一个容器可以占用多达1024个cpu。但如果它们都使用cpu,那么它们都将被限制为512 内存使用情况也是如此吗?或者我可以这样做吗? 以下是场景: 我有1024MB的RAM可用于容器,我有两个容器,我希望每个容器都有512MB的RAM,但如果其他容器不使用它,应该能够扩展到512 Mb以上。如何实现这一点?对于您提供给D

我希望通过限制CPU和内存,在单个主机上运行多个容器。如果我的主机有1024个cpu共享&我将它们分配为512和512给两个容器,这意味着如果第二个容器不使用任何cpu,那么第一个容器可以占用多达1024个cpu。但如果它们都使用cpu,那么它们都将被限制为512

内存使用情况也是如此吗?或者我可以这样做吗? 以下是场景:
我有1024MB的RAM可用于容器,我有两个容器,我希望每个容器都有512MB的RAM,但如果其他容器不使用它,应该能够扩展到512 Mb以上。如何实现这一点?

对于您提供给Docker的内存,以字节、千字节、兆字节等为单位的固定内存量(和交换)将限制容器可以分配的内存,无论主机是否有可用内存或其他进程是否正在使用它


在限制内存时,注意Docker(或cgroups)如何限制容器的内存和交换非常重要。从DockerV1.5开始(在v1.6中已修复),Docker允许独立地限制内存和交换。查看更多详细信息。

这是否意味着内存限制为512Mb的容器在可用的情况下实际上可以消耗800Mb的内存?如果您运行
docker run-m 512m…
该容器使用的最大内存量将为512Mb,如果您未指定
--内存交换
选项,它将允许您使用另一个512Mb的交换(如果您的主机系统有可用的交换)。正在运行<代码>docker运行-m 512m—内存交换=512m…将允许容器使用512Mb的ram,无需额外交换。。。但是这些约束是固定的,不管主机是否空闲,是否有空闲资源。