コンテナログをリアルタイムで閲覧

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`で起動しているサービス等だとログを閲覧するのに便利な気がする。

以上。