我有一个后端服务器程序,它使用 Docker Engine API (Json API) 启动 docker 容器,我想将每个 docker 容器的 CPU 内核数限制为例如 1。
Docker 引擎 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 内核,我只是想避免它使用超过 1 个 CPU 内核。)
我还可以设置CpuQuota
每个 docker 容器仅使用所有 CPU 内核的 12.5%,这对应于具有 8 个 CPU 内核的服务器上的 1 个 CPU 内核。这种方法的问题在于,如果我在具有不同 CPU 核心数量的不同服务器上运行我的后端程序,则CpuQuota
12.5% 的设置不再对应于 1 个 CPU 核心。
上述两种选择都很麻烦且远非理想。必须有更好/更简单的方法来设置每个容器的 CPU 内核数?!