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 コアを使用することを避けたいだけです。)
また、各 docker コンテナーがすべての CPU コアの 12.5% のみを使用するように設定することもできCpuQuota
ます。これは、8 つの CPU コアを持つサーバーの 1 つの CPU コアに相当します。このアプローチの問題は、異なる数の CPU コアを持つ別のサーバーでバックエンド プログラムを実行すると、CpuQuota
12.5% の設定が 1 つの CPU コアに対応しなくなることです。
上記のオプションはどちらも扱いにくく、理想とはほど遠いものです。コンテナごとの CPU コアの数を設定するための、より優れた/より簡単な方法があるに違いありません!