【问题标题】:Set the number of CPU cores of a container using Docker Engine API使用 Docker Engine API 设置容器的 CPU 核心数
【发布时间】:2018-09-19 08:55:44
【问题描述】:

我有一个后端服务器程序,它使用 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 内核,我只是想避免它使用超过 1 个 CPU 内核。)

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

以上两个选项都很麻烦且远非理想。必须有更好/更简单的方法来设置每个容器的 CPU 内核数?!

【问题讨论】:

    标签: docker docker-engine


    【解决方案1】:

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

    【讨论】:

    • 太棒了,这正是我想要的:-)
    • 嗨!快速提问——这是保留(即容器将保留这么多 CPU 空间并阻止其他容器使用它)还是限制(即容器不能超过它,但其他容器可以使用 CPU 空间如果他们需要)?谢谢!
    猜你喜欢
    • 2023-03-22
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 2018-06-14
    • 2019-10-23
    相关资源
    最近更新 更多