本記事はDocker ver24.0.7の環境で確認しています。
このコマンドは、コンテナのリソース使用状況のサマリー情報を、一定間隔おきに表示させることが出来ます。
Linuxのtopコマンドをご存知の方には、そのコマンドに似たような機能といった方が解りやすいかもしれません。
docker statsコマンドのフォーマットとオプション
フォーマット
docker stats [オプション] [ 対象コンテナ名 | ID] [ 対象コンテナ名 | ID . . .]
主なオプション一覧
オプション | 概説 |
---|---|
-a, --all | Dockerホスト内に存在する全てのコンテナの 情報を出力する (オプション無しの場合は実行中のコンテナ のみ対象) |
--no-stream | 表示内容のリアルタイム更新は無く、初回表 示のみで終了する |
--no-trunc | コンテナIDを省略表示しない |
コマンド例
$ docker stats
$ docker stats testvm testvm2 testvm3
$ docker stats --no-stream
docker statsコマンドの主な使い方
以下で実例をまじえたコマンドの使い方を解説していきたいと思います。
基本事項の解説
docker statsは、実行中のコンテナのリソース使用状況のリアルタイムレポートを表示するコマンドです。
どのコンテナが一番CPUを使っている、ネットワークの負荷が高いのはどのコンテナか、などの使い方ができます。
有用な情報を出力してくれますが、Linuxのtopコマンドのほうが使い勝手は上だと思います。
実行中の全コンテナのリソース使用状況を表示する
以下のコマンドを実行します。
$ docker stats
以下のように、画面上に、起動中のコンテナのCPU使用率やメモリ使用量などの情報が表示されます。
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
96b351078f39 testvm-mem6 0.00% 1.547MiB / 1GiB 0.15% 648B / 0B 0B / 0B 1
9cbf61e5d2be testvm-mem5 0.00% 1.516MiB / 1.875GiB 0.08% 648B / 0B 0B / 0B 1
f53571799f24 testvm-mem2 0.00% 1.535MiB / 1.875GiB 0.08% 648B / 0B 0B / 0B 1
78a0a0864a66 testvm-mem 0.00% 1.676MiB / 1.875GiB 0.09% 648B / 0B 9.6MB / 12.3kB 1
22755b68256f testvm 0.00% 416KiB / 1.875GiB 0.02% 648B / 0B 7.15MB / 0B 1
値がリアルタイムに更新しているように見えると思います。
表示は、「Ctrl」+cを押すと止まります。
止めた後、画面を上にスクロースしてみると解るのですが、docker statsを実行すると、dockerクライアントが端末の上下幅を自動取得して、表示がズレないように空行を出力して、コンテナのリソース情報を一定間隔で連続して出力しています。
最初は、terminalの画面制御機能を使用してリアルタイム表示させているのかと思ったのですが、止めた後に確認してみてわかりました。
出力間隔は、dockerのソースコードを確認したところ0.5秒固定のようです。
出力されている内容は、左から、コンテナID、コンテナ名、CPU使用率、メモリ使用率/メモリ上限値、メモリ使用率、ネットワークIO量、ブロックデバイスIO量、PIDSです。
PIDSの出力内容がわからなかったので、Docker公式ドキュメントを見たところ、コンテナによって生成されたプロセスとカーネルスレッドの数、と記述がありました。
コンテナを指定してリソース使用状況を出力する
前の項で既に使用してしまいましたが、以下のようにdocker statsコマンドを実行する際に、コンテナIDもしくは名前を指定して実行した場合、指定したコンテナのみのリソース使用状況が出力されます。
例えば、以下のとおりtestvmとtestvm2とtestvm3を指定して実行してみます。
$ docker stats testvm testvm2 testvm3
※事前に3つのコンテナを起動する必要があります
実行結果は、以下のように出力されます。
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
d28f497c728e testvm 0.00% 1.141MiB / 921.3MiB 0.12% 1.54kB / 0B 0B / 0B 2
ecd8cfba0f99 testvm2 0.00% 1.133MiB / 921.3MiB 0.12% 796B / 0B 0B / 0B 2
c37ef2542904 testvm3 0.00% 1.152MiB / 921.3MiB 0.13% 726B / 0B 0B / 0B 2
最初の1回のみ出力して終了する
デフォルトでは、実行を止めるまで0.5秒おきに出力され続けますが、「--no-stream」オプションを付けて実行した場合、出力は最初の1回だけになります。
$ docker stats --no-stream
普段使用する際は、最初の1回だけで十分な気もします。
停止中のコンテナを含めた全コンテナのリソース使用状況を出力する
デフォルトでは、実行中のコンテナのみが出力対象ですが、「-a」オプションを付けて実行した場合、停止中のコンテナも出力されます。
$ docker stats -a
しかし、使用しているterminalの行数を超える数のコンテナを出力した場合、出力された文字がチカチカして非常に見にくくてちょっと使いづらいですね。
terminalの出力内容をファイルに吐き出すログ機能がある場合は、docker statsの内容をファイルに出力して、後から参照するという方法で使用することにすれば便利かもしれません。
おわりに
以上でdocker statsコマンドの紹介を終わります。
ご指摘、ご要望などが御座いましたらコメントいただけるとうれしいです。
他のDockerコマンドの実例付紹介記事は、本サイト内の別記事「Dockerのコマンドの一覧(オリジナルな実例付き)」をご参照ください。
ご訪問ありがとうございました!
コメント