
なんで表示されないかが疑問。
access.logとerror.logはシンボリックリンクで、ログの出力先はそれぞれ、 /dev/stdout、/dev/stderr になっています。
stdout、stderr は 標準出力と、標準エラー出力ですので、それを tail しても中身は見れません。(というか、中身がそもそもありません)
これは、ログはコンテナ内に蓄積するのではなく、ストリームデータとして扱い、コンテナの外でどうにかするべき、といった思想が元になっていると思います。こうすることで、アプリケーションはログの出力先や、ストレージを気にしなくて良くなります。
リアルタイムにログの内容を表示する場合は tail -f <FILENAME> の代わりに、docker logs <CONTAINER_ID> -f で参照します。
ログの出力先は、ログドライバーによって変更できます。
https://docs.docker.jp/config/container/logging/configure.html
たとえば、syslog に出力するには、syslog logging driver を使います。 https://docs.docker.com/config/containers/logging/syslog/
また、cloudwatch logs に出力する場合は、Amazon CloudWatch Logs logging driver を使います。 https://docs.docker.com/config/containers/logging/awslogs/
他には、fluend を使ってログストリームを制御するといったやり方もあります。
とまぁ、Dockerではログはこういう感じですので、先ほどのURLを御覧頂いて、検討してみてもらえればと思います。

0 コメント