Dockerコンテナの情報を確認するにはどうしたらいいのかな?ということで、ちょっと調べてみました。
Docker標準のコマンドと、ctopというものが有用そうです。
確認用に、2つのコンテナを用意します。
ひとつは、nginx。
$ docker container run -it --rm --name nginx nginx:latest
もうひとつは、Ubuntu LinuxのコンテナにApache Benchをインストールします。このコンテナから、nginxのコンテナに負荷を
かけたりして取得できる情報の変化を確認していきたいと思います。
$ docker container run -it --rm --name ab ubuntu:latest bash # apt update -y && apt install apache2-utils -y
docker container top
最初は、docker container top。
docker container top | Docker Documentation
名前こそ「top」ですが、使い方はpsコマンドと同じようです。
以下のように、「docker container top [コンテナ名]」で指定します。
$ docker container top nginx UID PID PPID C STIME TTY TIME CMD root 7530 7498 0 00:14 pts/0 00:00:00 nginx: master process nginx -g daemon off; systemd+ 7582 7530 0 00:14 pts/0 00:00:00 nginx: worker process
結果は、psコマンドのように得られ、後ろにはpsコマンドと同じオプションが入れられるようです(デフォルトは「-ef」と同じ)。
$ docker container top nginx -ef UID PID PPID C STIME TTY TIME CMD root 7530 7498 0 00:14 pts/0 00:00:00 nginx: master process nginx -g daemon off; systemd+ 7582 7530 0 00:14 pts/0 00:00:00 nginx: worker process $ docker container top nginx aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 7530 0.0 0.0 32656 5188 pts/0 Ss+ 00:14 0:00 nginx: master process nginx -g daemon off; systemd+ 7582 0.0 0.0 33112 2600 pts/0 S+ 00:14 0:00 nginx: worker process
docker container stats
続いて、docker container stats。
docker container stats | Docker Documentation
こちらは、いわゆるtopコマンドですね。
$ docker container stats
こんな感じで、現在のコンテナの情報が表示され、更新されていきます。
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS f469fd5fb584 nginx 0.00% 2.566MiB / 15.58GiB 0.02% 6.29kB / 0B 0B / 0B 2 4b58ba4fb668 ab 0.00% 6.418MiB / 15.58GiB 0.04% 18.3MB / 808kB 197kB / 68.2MB 1
指定可能なオプションは、こちら。
表示される項目の意味は、こちらを見た方がよいでしょう。
docker stats | Docker Documentation
(Examples)[https://docs.docker.com/engine/reference/commandline/stats/#examples)
ここで、Apache Benchを実行してnginxに負荷をかけてみます。
# ab -n 1000000 -c 25 http://172.17.0.3/
CPU使用率などの情報が更新されていることが、確認できます。
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS f469fd5fb584 nginx 102.15% 4.223MiB / 15.58GiB 0.03% 140MB / 362MB 0B / 0B 2 4b58ba4fb668 ab 102.22% 17.53MiB / 15.58GiB 0.11% 380MB / 140MB 197kB / 68.2MB 2
ctop
最後は、ctopです。
GitHub - bcicen/ctop: Top-like interface for container metrics
見た感じ、「docker container stats」をより詳細に表示できるもののようです。
ダウンロードして、実行可能権限を付与します。
$ wget https://github.com/bcicen/ctop/releases/download/v0.7.2/ctop-0.7.2-linux-amd64 -O ctop $ chmod a+x ctop
実行。
$ ./ctop
「docker container stats」のように、現在のコンテナの状態が確認できます。
指定可能なオプションは、こちら。
「-scale-cpu」でホスト全体として見た時のCPU使用率を見たり、「-f」で表示するコンテナをフィルタリングすることが
できます。
とりあえず、Apache Benchでnginxに負荷をかけてみましょう。
# ab -n 1000000 -c 25 http://172.17.0.3/
こんな感じの表示になります。
ここで、「-scale-cpu」オプションを付けると、ホスト全体としてのCPU使用率になるので
$ ./ctop -scale-cpu
こういう表示になります。
※このホストは8つCPUがあります
また、ひとつのコンテナを対象にして、より詳細に情報を見ることもできます。
便利そうですね。
Dockerの標準コマンドと合わせて、使えるところでは使っていきましょう。