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実践活用ガイド