35
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-10-28

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

images.jpg

目次

  • ファイルサイズ制限
  • 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実践活用ガイド
35
24
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?