Dockerのリソース変化
dockerを0から触れていまだ勉強中なので記事内に間違った内容などがあれば編集リクエストを送っていただけるととても助かります
##cpu割り当て時間
dockerコンテナのcpu割り当て時間は基本的に100%で割り振られ,そのコアに割り当てられたコンテナの個数で決まる. なので1つだけコンテナを立てるとcpuの割り当て時間は100%になってしまう.
要するに同じコアに3つコンテナが建てられたら1つあたりの割り当て時間は、100/3で33.333...%になるらしい.
cpuのコアの指定には--cpuset-cpus
cpu割り当て時間の変更には--cpus
を使い変更.
以下の例は起動中のコンテナのcpuコアを1にして割り当て時間を50%にする場合です.
docker container update --cpuset-cpus=0 --cpus="0.5" <変更したいコンテナID>
メモリ割り当て
メモリの割り当て変更には, -m
を使います.
以下の例は, 起動中のコンテナのメモリ容量を100MBに制限する例です.
docker container update -m 100m <変更したいコンテナID>
制限したいメモリ容量の単位は、b(バイト)k(キロバイト)m(メガバイト)g(ギガバイト)が使えます.
コンテナメトリクス
コンテナのメトリクスを確認するうえで手っ取り早いのは
- docker stats
- htop
個人的には、この2つだと思います...
(コンテナのメトリクス確認なのでデータ取得にはdata dogやelasticsaerchを入れたほうが楽)
docker stats
docker stats
を実行するだけで起動中のコンテナの状態を一目で確認することができます.
docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
e7c6f7cd0153 magical_elbakyan 9.84% 50.67MiB / 100MiB 50.67% 9.97kB / 0B 341MB / 807MB 1
7d8cddfc7d9c nervous_jones 50.08% 52.11MiB / 100MiB 52.11% 9.97kB / 0B 8.24GB / 8.91GB 1
d7d25131fa19 confident_kilby 100.33% 53.11MiB / 100MiB 53.11% 10.2kB / 0B 3.87TB / 10.7TB 1
docker stats | 意味 |
---|---|
cpu% | cpu割り当て時間 |
MEM use | メモリ使用量 |
MEM% | メモリ使用率 |
NET I/O | ネットワークI/O |
BLOCK I/O | 入出力中の待機I/O |
htop
htopはdocker statsとは違い実行したマシンのプロセスがすべて表示されます.
htop
で実行
cpuの状態とメモリ, swap, load averageが一目で見れてCPU・メモリ使用量で並び変えもできるので マシン全体でコンテナがどう動いているかの確認に向いてると思います.
htopステータス | 意味 |
---|---|
PID | プロセスID |
NI | プロセス優先度 |
VIRT | 仮想メモリ |
RES | 物理メモリ |
SHR | プロセスと共有されるメモリ |
S | プロセス起動状態 |
CPU% | cpu使用率 |
MEM% | メモリ使用率 |
TIME+ | プロセス起動時間 |
参考文献
この記事は以下の情報を参考にして執筆しました。