結論
Docker 20.10からロギングドライバを json-file
/ journald
以外にしても、
docker logs
コマンドでコンテナログが見れます。(デュアルロギングというらしい)
詳細はこちら
背景
Dockerコンテナのログを見るコマンドとして docker logs
がありますが、
例えばログをAWSやGCPに流したいとか、Fluentdに流したいとすると
「ロギング・ドライバ」というものを変更すればよいとのことでした。
そこで、「docker ロギングドライバ」
とググると、以下のページに辿りつきます。(2021年5月時点)
ロギング・ドライバの設定(Docker-docs-ja 19.03)
このページを眺めていると ロギング・ドライバの制限 という項目があり、
Docker Community Engine を使う場合は、 docker logs コマンドは以下のドライバのみ利用可能です。
- local
- json-file
- journald
と記載されており、実際これまでは上記以外のロギングドライバを指定した状態で docker logs
をすると
$ docker logs
Error response from daemon: configured logging driver does not support reading
みたいな表示がされていました。
例えば私はGCPにログを流していたので、GCPのログドライバでも調べたのですが、やはり
This log driver does not implement a reader so it is incompatible with docker logs.
と記載されていました。(将来的にアップデートされると思います)
ところがDockerをアップデートして触っていると、
指定したロギングドライバの出力をした状態でも docker logs
でログが出ることに気づきました。
最初はバグかと思っていろいろ試していたのですが、
結局のところDockerのリリースノートにたどり着き、
Support reading docker logs with all logging drivers (best effort)
つまり「すべてのロギングドライバと一緒にdocker logsが読めるよ!」というアップデートがあったことに気づきました。
やはり docker logs
はデバッグには便利なので、非常にありがたいアップデートだと思います。
最後に
Docker 20.10がリリースされたのが2020年12月なので、
既に5か月経過しており「知ってるわ!」という方も多いと思いますが、
まだアップデートしてない方などの参考になれば幸いです。