Dockerにおいて表題の件。
■ 環境
- Docker for Mac 1.12.0-beta21
- Mac OSX El Capitan
■ docker logs
コンテナのログを閲覧する場合はいつも`docker logs`でコンテナを指定していただけであった。ログが増えているだろうと思う度に`docker logs`で全ログを出力するようなことをしていた。それほど頻度が多くなかったのもありこれでも十分であったのだが、本来であればこんな面倒なことはしたくない。ということで`docker logs`のヘルプを見ていた。
$ docker logs --help
Usage: docker logs [OPTIONS] CONTAINER
Fetch the logs of a container
Options:
--details Show extra details provided to logs
-f, --follow Follow log output
--help Print usage
--since string Show logs since timestamp
--tail string Number of lines to show from the end of the logs (default "all")
-t, --timestamps Show timestamps
$
`–follow`という素晴らしいものがあるではないか。早速試してみる。
一つ目の端末でコンテナを起動する。今回は下記のようにAlpine Linuxのコンテナを起動してみている。
$ docker run -ti --rm alpine sh
/ #
二つ目の端末で先に起動したコンテナのIDを確認し、`docker logs -f`でログを確認する。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b0e8aa7ffa67 alpine "sh" 14 minutes ago Up 14 minutes ecstatic_panini
$
$ docker logs -f ecstatic_panini
/ #
これで一つ目の端末で標準出力に何かをだしたりコマンドを実行するなりすると、二つ目の端末でリアルタイムにログとして閲覧が可能になる。今回はどういった作業をしているのか、が見られる程度な気もするが、`docker run -d`で起動しているサービス等だとログを閲覧するのに便利な気がする。
以上。