コンテナのリソース管理は、本番ユーザーにとって大きな要件です。 1つのホストで複数のコンテナを実行し、1つのコンテナがCPU、メモリ、io、またはネットワークの面で他のコンテナを効率的な方法で枯渇させないようにできることが、コンテナでの作業が好きな理由です。 しかし、コンテナのCPU管理はまだ私が望むほど簡単ではありません。コンテナのCPU使用率を制限することに関しては、さまざまなオプションがあります。メモリのようなものでは、人々が考えるのは非常に簡単です、 --memory 512m
コンテナを最大512MBにします。CPUでは、現在のオプションでコンテナの制限を理解するのは困難です。
Docker 1.13では、大多数のユーザーが理解できる健全なUXでコンテナのCPU使用率を制限するための最良の技術であるフラグを追加しました --cpus
。 これが必要な理由を示すために、1.12のオプションのいくつかを見てみましょう。
コンテナーの CPU 制限を設定するには、さまざまな方法があります。 CPUシェア、CPUセット、CFSクォータ、および期間は、最も一般的な3つの方法です 。先に進んで、CPUシェアを使用することは、私たちが持っているすべてのオプションの中で最も混乱し、最悪の機能であると言うことができます。数字は意味がありません。たとえば、5 は大きな数ですか、それとも最大 1024 の共有がある場合、システムのリソースの半分は 512 ですか? コンテナが1つしかない場合、100株は重要ですか。ただし、それぞれ100共有のコンテナをさらに2つ追加すると、どういう意味ですか? CPUシェアについて詳しく説明することもできますが、CPUシェアはシステム上の他のすべてのものに関連していることを覚えておく必要があります。
Cpusetは実行可能な代替手段ですが、正しく使用し、正しい状況で使用するには、さらに多くの考えと計画が必要です。 cfsスケジューラは、クォータと期間とともに、コンテナのCPU使用率を制限するための最良のオプションの一部ですが、ユーザーインターフェイスが不十分です。 ユーザーの CPU 使用率をナノ秒単位で指定すると、コンテナーを 1 つのコアに制限するなどの単純なタスクを実行するタイミングを判断するのが難しい場合があります。
ただし、1.13では、コンテナを1つのCPUに制限したい場合は、Dockerの実行/作成コマンドラインに追加する --cpus 1.0
だけです。コンテナの制限として2つ半のCPUが必要な場合は、 --cpus 2.5
.Dockerでは、CFSクォータと期間を使用して、コンテナのCPU使用率を必要なものに制限し、計算を行っています。
コンテナーの CPU 使用率を制限する場合は、この新しいフラグと API を使用してニーズを処理することを検討してください。 このフラグは、Docker を使用する場合、Linux と Windows の両方で機能します。
この機能の詳細については、ドキュメントを参照してください https://docs.docker.com/engine/admin/resource_constraints/
Docker 1.13 全般の詳細については、次のリンクを参照してください。
- 製品ドキュメントを読む
- 開始して Docker をインストールする
- 1月25日水曜日の午前10時PSTに開催される次のDockerオンラインミートアップに参加してください