Dockerを使っていて、ログを調べる必要性が生じるシーンも少なくはないでしょう。Dockerでは、コンテナのログを簡単にみられる機能(logsコマンド)も用意されています。
この記事では、Dockerにおけるlogsコマンドの概要や使い方、オプションまで解説しているので参考にして下さい。記事では、Dockerのコンテナログを扱う際の注意点もまとめています。
「docker logs」コマンドとはDockerのログを調べるための機能
Dockerでは各コンテナのログが、以下の場所にJSON形式※で保存されています。
/var/lib/docker/containers/コンテナID/コンテナID-json.log
「docker logs」コマンドとは、これらコンテナのログを調べるための機能です。
※JSON:JavaScript Object Notationの略称で、JavaScriptにおけるオブジェクトの表記法をもとにしたデータ形式です。
docker logsの使い方
それではdocker logsは、どのように使えばよいでしょうか。以下、基本的な書式と主なオプションについて1つずつ解説します。
基本的な書式
docker logsの基本的な書式は、以下の通りです。
docker logs [オプション] container
※「container」の部分に、対象のコンテナ名を入力します
これで対象のコンテナに保存されたログを調べることができます。次項では、どんなオプションが使えるかみていきましょう。
主なオプション
docker logsには複数のオプションが用意されており、これらオプションを活用することによってよりスムーズにコンテナのログを調査可能です。以下、主なオプションを使用例と共に紹介します。
「–tail」「-n」/出力するログの行数を指定
「–tail」「-n」は、出力するログの行数を指定するオプションです。以下の例では、ログの最後から100行分を出力します。
docker logs --tail 100 container
docker logs -n 100 container
※「container」の部分に、対象のコンテナ名を入力します
「–follow」「-f」/ログの出力を継続
「–follow」「-f」は、コンテナが動作し続ける限りログの出力を継続するオプションです。以下のように使います。
docker logs --follow container
docker logs -f container
※「container」の部分に、対象のコンテナ名を入力します
ログの出力を停止させる場合は、[Ctrl]+[C]キーを押下します。
「–timestamps」「-t」/タイムスタンプ情報をログに追加
「–timestamps」「-t」は、ログの表示にタイムスタンプ情報を追加するオプションです。以下のように使います。
docker logs --timestamps container
docker logs -t container
※「container」の部分に、対象のコンテナ名を入力します
「–since」/指定した時刻以降のログを表示
「–since」は、指定した時刻以降のログを表示するオプションです。以下のように使います。
docker logs --since 2022-10-14T00:00:00 container
このコマンドでは、2022/10/14 0:00以降のログを出力します。
docker logs --since 2h container
このコマンドでは、2時間前以降のログを表示します。
※「container」の部分に、対象のコンテナ名を入力します
「–until」/指定した時刻以前のログを表示
「– until」は、指定した時刻以前のログを表示するオプションです。以下のように使います。
docker logs --until 2022-10-14T00:00:00 container
このコマンドでは、2022/10/14 0:00以前のログを出力します。
docker logs --until 2h container
このコマンドでは、2時間前以前のログを表示します。
※「container」の部分に、対象のコンテナ名を入力します
「–details」/詳細なログを表示
「–details」は、より詳細なログを表示するためのオプションです。具体的にはコンテナを生成する際に指定した、環境変数やラベルといった属性が表示されるようになります。「–detail s」の使用例は以下の通りです。
docker logs --details container
※「container」の部分に、対象のコンテナ名を入力します
利用時の注意点
dockerの初期設定では、各コンテナのログはコンテナ削除時に一緒に削除されてしまいます。そこでDockerのLogging Driver機構を使うことによって、コンテナの外部へ出力するように指定することも可能です。
たとえば以下の例ではコンテナ上でlsコマンドを実行し、それをsyslogに出力します。
docker run --rm --log-driver syslog container ls
syslog以外にも、ログの出力先としてAmazon CloudWatch LogsやGoogle Cloud Platform (GCP) ロギングなども指定可能です。なおLogging Driver機構でログの出力先をかえた場合、docker logコマンドでコンテナのログを確認できなくなる点は注意して下さい。必要に応じて標準のまま残すか、syslogなどに出力するか検討するとよいでしょう。
サポートしている出力先や具体的な操作手順については、以下公式サイトのドキュメントで確認できます。
まとめ
Dockerのコンテナログは、docker logsコマンドを使うことで簡単に確認が可能です。docker logsコマンドは、必要に応じて「–tail」や「–follow」などのオプションを使うことによって、より便利に使うこともできます。
一方でDockerのコンテナログは、コンテナを削除すると一緒に消えてしまう点は注意しないといけません。Dockerのコンテナログは、Logging Driver機構を使うことによって外部へ出力し残しておくこともできます。
開発・検証・プログラミング学習に。無駄なコストもかけたくないあなたにおすすめのVPS
カゴヤのVPSは初期費用無料でアカウント登録さえしておけば、必要なときだけ日額課金でサーバーを立ち上げ可能!料金は使った分だけ。