Edited at

Dockerリソース使用状況の確認方法

本投稿では、ホストOS上で現在稼働しているコンテナのリソース使用状況の確認方法およびコンテナで実行したコマンドのログを確認する方法を記載します。


1. テスト用コンテナをバックグラウンドで起動

まず、リソース確認用にテスト用コンテナを作成し、バックグラウンドでコンテナを起動します。


コンテナは、コンテナ作成時に -d オプションを付与することでバックグラウンドで実行することができます。


bash

$ docker container run \

> -d \ # バックグラウンドで実行
> --name test0001 \
> -h host0001 \
> -it \
> centos:7.5.1804 /bin/bash
fb6f53e1d4f599f26947bd39c40b20d48a22597ba3689c63df9598981d31fa12
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb6f53e1d4f5 centos:7.5.1804 "/bin/bash" 18 seconds ago Up 17 seconds test0001


2. リソース使用状況を確認

次に、コンテナのリソース使用状況を確認します。リソースの使用状況の確認には、 docker container stats コマンドを実行することで確認することができます。


また、実行時に以下のコマンドオプションの指定や --format オプションで出力する項目をカスタマイズすることができます。


docker container stats コマンドのオプション

オプション
説明

-a
停止しているコマンドも含めて全てのコンテナのリソース使用状況を表示

--no-stream
使用状況を一度だけ表示し、コマンドプロンプトに戻るオプション

--no-trunc
完全なコンテナIDを表示

--format
リソース使用状況の表示する項目を指定して表示


--format オプションで指定可能な項目

パラメータ
説明

.Container
コンテナ名またはコンテナID

.Name
コンテナ名

.ID
コンテナID

.CPUPerc
CPU利用率

.MemUsage
メモリ使用量

,NetIO
ネットワークIO

.BlockIO
ディスクIO

.MemPerc
メモリパーセンテージ(Windowsは使用不可)

.PIDs
PID番号(Windowsは使用不可)


docker container stats コマンドの実行例


bash

$ docker container stats \

> --no-stream \
> --format "table {{.Name}}\t{{.ID}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.PIDs}}" # 表示する項目を指定
NAME CONTAINER ID CPU % MEM USAGE / LIMIT PIDS
test0001 fb6f53e1d4f5 0.00% 804KiB / 1.952GiB 1


3. コンテナで実行したコマンドのログ確認方法

最後に、テスト用コンテナで実行したコマンドのログを確認する方法を記載します。


ホストOS上で docker container logs コマンドを実行することでコンテナ内でのコマンド実行ログを確認することができます。


ホストOS上でrsyslogなどを活用することで、リアルタイムでのコンテナのログ出力など拡張することも可能です。


テスト用コンテナでコマンドを実行


bash

$ docker container attach test0001

[root@host0001 /]# ls
bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@host0001 /]# hostname
host0001
[root@host0001 /]# read escape sequence


ホストOSで時刻付きでテスト用コンテナで実行したコマンドログを確認


bash

$ docker container logs -t test0001  # -t オプションを付与して時刻付きで表示

[root@host0001 /]# ls
2019-06-09T03:10:06.464865400Z bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
2019-06-09T03:10:09.631366100Z [root@host0001 /]# hostname
2019-06-09T03:10:09.636110800Z host0001


参考文献


  1. 古賀政純, "Docker実践ガイド 第2版", pp.126-130 (2019).

  2. The rocket-fast Syslog Server - rsyslog, https://www.rsyslog.com/, Online; accessed 9-June-2019.