Edited at

Docker (ファイル/CPU/メモリ/プロセス) のリソースを制限する方法まとめ

Dockerコンテナの実行時にunlimitを使用してリソースの制限をすることができます。


目次


  • ファイルサイズ制限

  • CPUコア制限

  • CPU時間制限

  • CPU相対量の指定

  • メモリの使用量制限

  • プロセス数の制限


ファイルサイズ制限

1MBで制限します

これによって1MBより大きいファイルを作成することができなくなります。

$ docker run --ulimit fsize=1000000:1000000 ubuntu


CPUコア制限

使用するCPUをCPU0番のみに制限します

CPU番号はtopコマンドで知ることができます。

$ docker run --cpuset-cpus=0 ubuntu


CPU時間制限

--cpu-periodで指定した秒数(μs)に、--cpu-quotaで指定した秒数(μs)のCPU時間が割り当てられその量を超えたCPUを利用できなくなります。

この場合は、CPU使用率が50%になります

$ docker run --cpu-period=50000 --cpu-quota=25000 ubuntu


CPU相対量の指定

複数のコンテナを実行した時に、--cpu-shareの比率によって使用するCPUの割当が決まります

この場合は、centosの50%のCPUがubuntuに与えられます。

$ docker run --cpu-share=512 ubuntu

$ docker run --cpu-share=1024 centos


メモリの使用量制限

物理メモリの制限とスワップメモリの制限ができます

この場合は、メモリを50MBに、スワップメモリを150MBに制限しています。

$ docker run --memory=50m --memory-swap=150m ubuntu


プロセス数の制限

この制限をしておくことで、fork爆弾対策にもなります

この場合は、プロセス数を20に制限しています。

$ docker run --pids-limit 20 ubuntu

カーネルバージョンの制限などのため、--pids-linitが利用できない場合、unlimitによる制限で代用することもできます。

この場合、プロセス数を3に制限しています。

$ docker run --unlimit nproc=3:3 ubuntu


まとめ


  • リソースの制限などは、普段しませんが不意に役に立ちそうなのでまとめました。

  • お役に立てればと思います。


参考


  • Docker実践活用ガイド