Docker制限 計算ツール
Docker制限の詳しい解説
Dockerコンテナに割り当てるCPU数は、ホストの総CPU数をコンテナ数で割り、余裕を見て8割程度に抑えるのが実務上の目安です。16コアのホストで8コンテナなら、1コンテナあたり1.6コアという計算になります。残りの2割はホストOS、Dockerデーモン、監視エージェントなどが使用する分です。CPU制限には`--cpus`(使用可能なCPU数の上限)と`--cpu-shares`(相対的な優先度)の2つの指定方法があり、性質が異なります。`--cpus`はハードリミットで、他が空いていても上限を超えません。`--cpu-shares`はソフトリミットで、競合時の配分比率を決めるだけなので、他が空いていれば上限なく使えます。予測可能な性能が必要な本番環境では`--cpus`、リソースを効率的に使い切りたい場合は`--cpu-shares`が適します。メモリ制限も併せて設定しないと、1コンテナのメモリリークでホスト全体が停止する事態が起こり得ます。
このツールの使い方
ホストのCPU数とコンテナ数を入力すると、1コンテナあたりの推奨CPU割り当てが表示されます。ホストOSとデーモンの分として2割を確保した計算です。実際の割り当ては各コンテナの負荷特性に応じて傾斜配分するほうが効率的です。
よくある間違い・注意点
- メモリ制限を設定しない — 1コンテナのメモリリークでホスト全体が停止する可能性があります。CPUと併せて設定してください。
- 全コンテナに均等配分する — 負荷特性は異なります。実測に基づいて傾斜配分するほうが全体の効率が上がります。
よくある質問(FAQ)
--cpusと--cpu-sharesの違いは?
--cpusはハードリミット、--cpu-sharesは競合時の配分比率です。本番環境では前者が予測可能です。
オーバーコミットしても良いですか?
全コンテナが同時にピークに達しない前提なら可能です。ただし性能が予測しづらくなります。
適切な値はどう決めますか?
実測が基本です。まず制限なしで運用して使用量を計測し、そこに余裕を加えて設定してください。
※本ツールの計算結果は概算です。税務・医療・法律にかかわる判断は、税理士・医師・弁護士など専門家にご相談ください。