我有一个后端服务器程序,该程序使用Docker Engine API(Json API)启动Docker容器,我想将每个Docker容器的CPU核心数限制为例如1。
Docker Engine API文档提供了多个选项来配置容器的CPU设置,请参见https://docs.docker.com/engine/api/v1.24:
"HostConfig": {
"CpuPercent": 80,
"CpuShares": 512,
"CpuPeriod": 100000,
"CpuQuota": 50000,
"CpusetCpus": "0,1",
"CpusetMems": "0,1"
}
我可以为此使用CpusetCpus
,但这非常麻烦,因为我需要保留将哪些Docker容器分配给哪些CPU内核的列表。 (我不在乎我的容器在哪个CPU内核上运行,我只是想避免它使用多个CPU内核。)
我还可以设置CpuQuota
,以便每个docker容器仅使用例如所有CPU内核的12.5%,相当于具有8个CPU内核的服务器上的1个CPU内核。这种方法的问题在于,如果我在具有不同CPU核心数量的其他服务器上运行后端程序,则CpuQuota
设置为12.5%不再对应于1个CPU核心。
以上两种选择都很繁琐,远非理想。必须有一种更好/更简单的方法来设置每个容器的CPU核心数量?!
答案 0 :(得分:1)
您可以设置NanoCPUs
。 1000000000单位将等于1核心。