Docker内部のログ出力を取得する方法は何ですか
Dockerコンテナでは、コンテナ内のログを出力するためのさまざまな方法があります。
- コンテナ内のアプリケーションは、ログメッセージを標準出力(stdout)と標準エラー(stderr)のストリームに直接送信できます。これらのメッセージは Docker によってキャプチャされ、ホストマシンのログファイルに格納されます。コンテナの標準出力および標準エラーのログを見るには、docker logs コマンドを使用できます。
- たとえば、mycontainerというコンテナのログを参照するには、次のコマンドを実行します:
- docker logs mycontainer
- ログドライバー:Dockerはログをファイル、Syslog、リモートログサーバーなど、さまざまな宛先に送信するログドライバーを各種提供しています。ログドライバーを設定することで、必要に応じてコンテナのログを任意の場所に転送できます。`–log-driver` オプションを使用して、コンテナの作成時にログドライバーを指定できます(例)。
- docker run –log-driver=json-file myimage
- 異なるロギング・ドライバーを利用することで、コンテナのログをさまざまなターゲットへ送信できます。たとえば、Splunk、ELK(Elasticsearch/Logstash/Kibana) スタック、その他のログ収集ツールへ送信できます。
- ログコレクター(Log collectors):一部のログドライバーは、コンテナからのログを処理・保管するために追加のログコレクターを構成する必要があります。これらのログコレクターは、コンテナベース、ホストマシンベース、クラウドプラットフォームベースにすることができます。例えば、ELKスタックのLogstashはログコレクターとして機能し、Dockerデーモンからログを収集して、Elasticsearchに送信し、保管・分析します。
Dockerコンテナ内のログ出力方法は、標準出力、標準エラー出力のほか、ログドライバーを介してログを各種宛先に送信し、ログコレクターで処理・保管する手法があります。