#author("2020-09-22T03:46:25+09:00","default:ryuichi","ryuichi")
#author("2020-09-22T03:51:04+09:00","default:ryuichi","ryuichi")
* CPUやメモリーリソースを制限 Ver2系 [#f215fd8c]
** 前提 [#k6e9651d]
- CPUやメモリーリソースの制限は、Dockerfileの2系と3系では大きく変わっており、互換性がない。3系ではDocker Swarmを利用するようになっている。2系の中でもサポートされているオプションがかなり違うようだ。
-- https://stackoverflow.com/questions/52308815/resource-limits-specified-in-docker-compose-yml-not-taken-into-account-by-docker
- ここでは2系で説明する。
** 準備 [#f13c8557]
*** Dockerfile [#jd091e92]
FROM ubuntu
RUN apt-get update && apt-get install -y \
stress
CMD stress --cpu 8 --timeout 20
- Ubuntuにstressコマンドをインストールして実行する。stressはCPU負荷を強制するベンチマークツールで、今回は8コアを20秒間に設定している
*** docker-compose.yml [#bede3b9c]
version: '2.4'
services:
myst:
image: stress
container_name: myst
tty: true
stdin_open: true
cpus: '0.3'
cpuset: 0,1
- ここではCPU使用率を30%、CPUコアをコア0とコア2に制限している。詳しくは次を参照。 https://docs.docker.jp/engine/reference/run.html#runtime-constraints-on-resources
- ここではCPU使用率を30%、CPUコアをコア0とコア1の計2コアに制限している。詳しくは次を参照。 https://docs.docker.jp/engine/reference/run.html#runtime-constraints-on-resources
- なお、ホストOSのマシンが8コア16スレッドなら、コンテナ内では16コアで認識される。
** 実行 [#f1f9850c]
docker-compose up
- ホストOSがWindowsならタスクマネージャーでパフォーマンスを確認する
** 参考 [#lda9fb68]
- https://docs.docker.com/compose/compose-file/compose-file-v2/#cpu-and-other-resources