docker stats¶
補足説明¶
docker stats
コマンドは実行中のコンテナからライブ・データ・ストリームを返します。特定コンテナの情報のみを取得するには、コンテナ名またはコンテナ ID をスペース区切りで追加します。ここでは停止しているコンテナも指定できますが、停止中のコンテナは何も返しません。
コンテナのリソース使用詳細を知りたい場合は、 /containers/(id)/stats
API エンドポイントを使います。
注釈
Linux では、 Docker CLI は合計メモリ使用量から、キャッシュを差し引いた容量を表示します。このような計算処理を API は行いませんが、合計メモリ使用量とキャッシュ使用量を表示しますので、必要に応じてクライアントがデータを使えます。キャッシュ使用量が定義されているのは、 cgroup v1 ホスト上の memory.stat
ファイルにある total_inactive_file
フィールドです。
Docker 19.03 より以前では、キャッシュ使用量は cache
フィールドで定義されていました。cgroup v2 ホストでは、キャッシュ使用率は inactive_file
フィールドの値で定義されています。
注釈
PIDS
列には、対象コンテナによって作成されたプロセス数とカーネルスレッド数を含みます。スレッドとは Linux カーネルによって使われている用語です。他の同等の用語は「 PIDS
列の大きな数値は、小さなプロセス数( ps
や top
で表示 )の連結のため、コンテナによって多くのスレッドが作成されているのが分かります。
コマンドの使用例は、以下の 使用例のセクション をご覧ください。
オプション¶
名前, 省略形 |
デフォルト |
説明 |
---|---|---|
|
全てのコンテナを表示(デフォルトは実行中のみ表示) |
|
|
Go テンプレートを使って表示を形成 |
|
|
情報表示のストリーミングを無効化し、1つめの結果のみ表示 |
|
|
表示を |
使用例¶
docker stats
を実行すると、 Linux デーモンで実行中のコンテナ全てを表示します。
$ docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
b95a83497c91 awesome_brattain 0.28% 5.629MiB / 1.952GiB 0.28% 916B / 0B 147kB / 0B 9
67b2525d8ad1 foobar 0.00% 1.727MiB / 1.952GiB 0.09% 2.48kB / 0B 4.11MB / 0B 2
e5c383697914 test-1951.1.kay7x1lh1twk9c0oig50sd5tr 0.00% 196KiB / 1.952GiB 0.01% 71.2kB / 0B 770kB / 0B 1
4bda148efbc0 random.1.vnc8on831idyr42slu578u3cr 0.00% 1.672MiB / 1.952GiB 0.08% 110kB / 0B 578kB / 0B 2
--format を使ってフォーマット文字を指定 しない場合、以下の列を表示します。
列の名前 |
説明 |
---|---|
|
コンテナの ID と名前 |
|
ホスト上の CPU とメモリを、コンテナがどれだけ使っているかパーセントで表示 |
|
コンテナが使っている合計メモリ容量と、利用が許可されている合計メモリ容量 |
|
コンテナが自身のネットワークインターフェースを通して送受信したデータ容量 |
|
コンテナがホスト上のブロックデバイスから読み書きしたデータ容量 |
|
コンテナが作成したプロセス数またはスレッド数 |
Linux デーモンに対し、複数のコンテナ名か ID で docker stats
を実行します。
$ docker stats awesome_brattain 67b2525d8ad1
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
b95a83497c91 awesome_brattain 0.28% 5.629MiB / 1.952GiB 0.28% 916B / 0B 147kB / 0B 9
67b2525d8ad1 foobar 0.00% 1.727MiB / 1.952GiB 0.09% 2.48kB / 0B 4.11MB / 0B 2
全ての(実行中および停止中の)コンテナを、任意の表示形式になるよう docker stats
を実行します。
$ docker stats --all --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}" fervent_panini 5acfcb1b4fd1 drunk_visvesvaraya big_heisenberg
CONTAINER CPU % MEM USAGE / LIMIT
fervent_panini 0.00% 56KiB / 15.57GiB
5acfcb1b4fd1 0.07% 32.86MiB / 15.57GiB
drunk_visvesvaraya 0.00% 0B / 0B
big_heisenberg 0.00% 0B / 0B
上の例では drunk_visvesvaraya
と big_heisenberg
が停止済みのコンテナです。
Windows デーモンに対し、 docker stats
を全ての実行中のコンテナを表示します。
PS E:\> docker stats
CONTAINER ID CPU % PRIV WORKING SET NET I/O BLOCK I/O
09d3bb5b1604 6.61% 38.21 MiB 17.1 kB / 7.73 kB 10.7 MB / 3.57 MB
9db7aa4d986d 9.19% 38.26 MiB 15.2 kB / 7.65 kB 10.6 MB / 3.3 MB
3 f214c61ad1d 0.00% 28.64 MiB 64 kB / 6.84 kB 4.42 MB / 6.93 MB
Windows デーモンに対し、複数のコンテナ名か ID で docker stats
を実行します。
PS E:\> docker ps -a
CONTAINER ID NAME IMAGE COMMAND CREATED STATUS PORTS NAMES
3f214c61ad1d awesome_brattain nanoserver "cmd" 2 minutes ago Up 2 minutes big_minsky
9db7aa4d986d mad_wilson windowsservercore "cmd" 2 minutes ago Up 2 minutes mad_wilson
09d3bb5b1604 fervent_panini windowsservercore "cmd" 2 minutes ago Up 2 minutes affectionate_easley
PS E:\> docker stats 3f214c61ad1d mad_wilson
CONTAINER ID NAME CPU % PRIV WORKING SET NET I/O BLOCK I/O
3f214c61ad1d awesome_brattain 0.00% 46.25 MiB 76.3 kB / 7.92 kB 10.3 MB / 14.7 MB
9db7aa4d986d mad_wilson 9.59% 40.09 MiB 27.6 kB / 8.81 kB 17 MB / 20.1 MB
フォーマット(表示形式)¶
表示形式のオプション( --format
)は Go テンプレートを使ってコンテナの出力を整えます。
有効な Go テンプレート用のプレースホルダは以下の通りです。
プレースホルダ |
説明 |
---|---|
|
コンテナ名か ID(ユーザ入力) |
|
コンテナ名 |
|
コンテナ ID |
|
CPU パーセンテージ |
|
メモリ利用量 |
|
ネットワーク IO |
|
ブロック IO |
|
メモリのパーセンテージ(Windows 上では利用できない) |
|
PID数(Windows 上では利用できない) |
--format
オプションを使うと、 stats
コマンドはテンプレートで宣言した通りにデータを確実に出力するか、 table
命令を使って列ヘッダも含みながら同様に表示するかのいずれかです。
以下の例は、テンプレートを使いますがヘッダを表示せず、全てのイメージを Container
と CPUPerc
エントリをコロン( :
)で区切り表示します。
$ docker stats --format "{{.Container}}: {{.CPUPerc}}"
09d3bb5b1604: 6.61%
9db7aa4d986d: 9.19%
3f214c61ad1d: 0.00%
全てのコンテナの名前、CPU パーセンテージ、メモリ使用量といった統計情報を、表形式で表示するには次のようにします。
$ docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"
CONTAINER CPU % PRIV WORKING SET
1285939c1fd3 0.07% 796 KiB / 64 MiB
9c76f7834ae2 0.07% 2.746 MiB / 64 MiB
d1ea048f04e4 0.03% 4.583 MiB / 64 MiB
デフォルトの表示形式は、以下の通りです。
Linux:
"table {{.ID}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}\t{{.NetIO}}\t{{.BlockIO}}\t{{.PIDs}}"
Windows:
"table {{.ID}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}\t{{.BlockIO}}"