如何使docker容器资源相互排斥?

如何使docker容器资源相互排斥?,docker,containers,Docker,Containers,我希望多个正在运行的容器具有相互排斥的资源。例如,当有从id0到id63的CPU核时,如果为每个容器分配了32个CPU核,则分配给它们的CPU核是互斥的。此外,当主机有16GB的RAM时,我们希望为每个容器分配8GB的内存,这样一个容器就不会影响另一个容器的内存使用 有什么好方法可以做到这一点吗?我认为您所需要的只是限制容器资源。通过这种方式,您可以确保没有容器使用超过X个内核和/或Y个RAM。要将CPU使用限制为1个核心,请将--cpus=1.0添加到docker run命令中。要将RAM限制

我希望多个正在运行的容器具有相互排斥的资源。例如,当有从id0到id63的CPU核时,如果为每个容器分配了32个CPU核,则分配给它们的CPU核是互斥的。此外,当主机有16GB的RAM时,我们希望为每个容器分配8GB的内存,这样一个容器就不会影响另一个容器的内存使用


有什么好方法可以做到这一点吗?

我认为您所需要的只是限制容器资源。通过这种方式,您可以确保没有容器使用超过X个内核和/或Y个RAM。要将CPU使用限制为1个核心,请将
--cpus=1.0
添加到
docker run
命令中。要将RAM限制为8 GB,请添加
-m=8g
。总而言之:

docker run --rm --cpus=1 -m=8g debian:buster cat /dev/stdout
如果你看一下docker stats,你会发现内存是有限的(虽然没有CPU的指示):


请阅读。

IMO中的更多内容,大多数有此要求的人都没有仔细考虑过。您可以这样做,但它不是容器的主流用例。主要原因是,如果一个服务空闲,您将浪费一半的机器。如果另一个服务耗尽了它的所有资源,它将无法访问属于空闲服务的资源。如果你在云环境中,你可以通过获得两个大小为一半的独立实例来实现这一点。Docker并不是真的这么做的。
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
8d9a33b00950        funny_shirley       0.00%               1MiB / 8GiB           0.10%               6.7kB / 0B          0B / 0B             1