Spring Boot 1.5.x の Web アプリを 2.0.x へバージョンアップする ( 番外編 )( docker logs メモ書き )
概要
記事一覧はこちらです。
docker logs
で出力されるログはソケットかパイプでコンテナの標準出力・標準エラー出力に出力されたものを受け取って表示していると何となく思っていたのですが、docker logs で表示されるログの保存場所とローテート方法 の記事を読むとどうもログファイルに出力していて、それを読み取って表示しているらしいです。興味が湧いたので確認してみます。
参照したサイト・書籍
docker logs で表示されるログの保存場所とローテート方法
https://qiita.com/tily/items/adb433505da6c7812725Docker for WindowsのMobyLinuxVMに接続する方法
https://qiita.com/gentaro/items/cf666259cb6baf2eb8dbConfigure logging drivers
https://docs.docker.com/config/containers/logging/configure/
目次
docker logs
コマンドで出力されるログがログファイルに出力されていることを確認する- log-driver に awslogs を指定すればコンテナのログを Amazon CloudWatch Logs に転送できるらしい
手順
docker logs
コマンドで出力されるログがログファイルに出力されていることを確認する
pgadmin4 はログインしているとコンテナのログが出力され続けるので、これでログファイルのサイズが増え続けるのか確認してみます。
docker-compose up -d
コマンドでコンテナを起動した後、docker inspect --format '{{ .LogPath }}' pgadmin4
でログファイルのパスを確認します。
Hyper-V 上に作成されている MobyLinuxVM に接続してログファイルを確認します。適当なディレクトリに Dockerfile を新規作成し、以下の内容を記述します。
FROM alpine MAINTAINER You <you@example.com> RUN apk update && \ apk add util-linux && \ rm -rf /var/cache/apk/* ENTRYPOINT ["nsenter", "--target", "1", "--mount", "--uts", "--ipc", "--net", "--pid"]
build した後、コンテナを起動して MobyLinuxVM に接続します。
> docker build . -t hostenter > docker run -it --privileged --pid=host hostenter /bin/sh
接続後、docker inspect --format '{{ .LogPath }}' pgadmin4
コマンドで取得したディレクトリへ移動し、ログファイルのサイズが増え続けていることを確認します。
確かにログファイルが作成されていて、サイズが増え続けていました。ログが出力され続けるコンテナを長時間起動したままにする時は、ログファイルの最大サイズを設定した方が良さそうです。
log-driver に awslogs を指定すればコンテナのログを Amazon CloudWatch Logs に転送できるらしい
Configure logging drivers や Amazon CloudWatch Logs logging driver を見た感じでは、Docker 自体にログ転送の機能が用意されていて、log-driver に awslogs を指定して設定するだけで Amazon CloudWatch Logs に転送できるようです。
試してみたいところですが、今回はメモ書きに留めておきます。2.0.x へのバージョンアップの記事はそろそろ終わらせて 2.1.x の記事に移りたいので。
ここまで docker network、docker volume、docker logs を見ましたが、他にもまだ何かあるのでしょうか。。。
履歴
2019/01/22
初版発行。