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

  • 7
    Like
  • 0
    Comment

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

images.jpg

目次

  • ファイルサイズ制限
  • CPUコア制限
  • CPU時間制限
  • CPU相対量の指定
  • メモリの使用量制限
  • プロセス数の制限

ファイルサイズ制限

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

$ docker run --unlimit 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実践活用ガイド