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 <サービス名>

参考

» docker stats