使用 Docker Engine API 设置容器的 CPU 核心数

3 docker docker-engine

我有一个后端服务器程序,它使用 Docker 引擎 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"
}
Run Code Online (Sandbox Code Playgroud)

我可以使用CpusetCpus它,但这非常麻烦,因为我需要保留将哪些 docker 容器分配给哪些 CPU 核心的列表。(我不关心我的容器运行在哪个 CPU 核心上,我只是想避免它使用超过 1 个 CPU 核心。)

我还可以设置CpuQuota为每个 docker 容器仅使用所有 CPU 核心的 12.5%,这对应于具有 8 个 CPU 核心的服务器上的 1 个 CPU 核心。这种方法的问题在于,如果我在具有不同数量 CPU 核心的不同服务器上运行后端程序,则CpuQuota12.5% 的设置不再对应于 1 个 CPU 核心。

上述两种选择都很麻烦,而且远非理想。一定有更好/更简单的方法来设置每个容器的 CPU 核心数?!

Kin*_*ang 5

您可以设置NanoCPUs. 1000000000 个单位等于 1 个核心。