docker statsコマンド
Dockerコンテナが使用しているCPUやメモリなどのリソース使用量を確認するにはdocker statsコマンドを使う。
$ docker stats
コンテナ名を指定しない場合は起動中の全コンテナの情報を表示する。
デフォルトではtopコマンドのようにリアルタイムで情報を更新し続ける。
$ docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
779ed6cbe46a docker-stats-test2 0.00% 556KiB / 5.773GiB 0.01% 266B / 0B 0B / 0B 1
915443f029c2 docker-stats-test 0.00% 552KiB / 5.773GiB 0.01% 3.18kB / 0B 0B / 0B 1
表示される各項目は以下の通り。
| 項目 | 内容 |
|---|---|
| CPU % | CPU使用率 |
| MEM USAGE / LIMIT | メモリ使用量とメモリ上限 |
| MEM % | メモリ使用率 |
| NET I/O | ネットワークの送受信バイト数 |
| BLOCK I/O | ディスクの読み書きバイト数 |
| PIDS | コンテナ内で起動しているプロセス・スレッド数 |
以下はdocker-stats-testコンテナ内でCPU負荷をかけた状態で確認した例。
CPU使用率が上昇している。
$ docker stats --no-stream docker-stats-test
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
915443f029c2 docker-stats-test 99.89% 1.004MiB / 5.773GiB 0.02% 3.25kB / 0B 0B / 0B 2
特定のコンテナだけを確認する
コンテナ名かIDを指定すると、指定したコンテナだけのリソース使用量を確認できる。
$ docker stats <コンテナ>
複数のコンテナ名を指定することも可能。
$ docker stats <コンテナ1> <コンテナ2>
1回だけ取得する(–no-stream)
docker statsはデフォルトでリアルタイムに情報を更新し続けるため、シェルスクリプトなどで結果を扱いにくい。--no-streamオプションを付けると、コマンド実行時点の情報を1回だけ取得して終了する。
$ docker stats --no-stream
出力形式を指定する(–format)
--formatオプションを使うと、表示する項目や形式を指定できる。
$ docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
NAME CPU % MEM USAGE / LIMIT
docker-stats-test2 0.00% 556KiB / 5.773GiB
docker-stats-test 0.00% 552KiB / 5.773GiB
docker composeの場合
docker composeの場合はdocker compose statsコマンドを使う。
オプションはdocker statsと同様に使える。
$ docker compose stats
$ docker compose stats --no-stream
サービス名を指定すると、指定したサービスだけのリソース使用量を確認できる。
$ docker compose stats <サービス名>
参考
\第一線のプログラマーの行動原理を学べる!/
