Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】How to Tail Docker Logs?

2025年09月25日に「Dev.to」が公開したITニュース「How to Tail Docker Logs?」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Dockerログは、コンテナ内のアプリ動作を記録し、問題解決や性能監視に不可欠だ。`docker logs -f`コマンドでリアルタイムにログを追跡し、異常を検知できる。しかし、このコマンドには限界があり、大規模な監視にはSigNozのような専用ツールを使うとより効果的だ。

出典: How to Tail Docker Logs? | Dev.to公開日:

ITニュース解説

Dockerログは、Dockerコンテナ内で動作するアプリケーションが生成する記録である。これには、アプリケーションの標準出力(stdout)や標準エラー出力(stderr)が含まれる。これらのログは、コンテナ内部で何が起きているかを理解するための不可欠な情報源であり、問題のトラブルシューティング、アプリケーションの監視、挙動の把握に極めて重要となる。Dockerログを監視することは、デバッグやトラブルシューティング、パフォーマンス監視、セキュリティ監査、そしてコンテナ化されたアプリケーション全体の健全性と信頼性の維持に大きなメリットをもたらす。

「tail」とは、ログファイルなど、ファイルに新しく書き込まれた最新のデータ部分をリアルタイムで追跡し監視する行為を指す。Dockerログをtailすることは、コンテナ内で実行中のアプリケーションをデバッグする上で欠かせない監視作業である。この操作は、docker logsコマンドに-f(follow)フラグを付けて実行することで実現できる。

特定のコンテナのログをtailするには、まずdocker psコマンドで実行中のコンテナのIDまたは名前を確認する。次に、docker logs -f <コンテナIDまたは名前>コマンドを使用する。これにより、そのコンテナのログがリアルタイムでターミナルに表示される。

ログの末尾から特定の行数だけを表示したい場合は、--tailオプションを使用する。例えば、docker logs -f --tail 100 <コンテナIDまたは名前>と入力すると、最新の100行だけがリアルタイムで追跡される。

Docker Composeで管理している複数のコンテナのログを一括でtailしたい場合は、docker-compose logs -fコマンドが便利だ。

特定の期間のログだけを表示するには、--sinceフラグや--untilフラグを使用する。例えば、--since "YYYY-MM-DDThh:mm:ss"で指定日時以降のログを、--until "YYYY-MM-DDThh:mm:ss"で指定日時までのログを確認できる。

ログの中から特定のキーワードでフィルタリングしたい場合は、grepコマンドと組み合わせる。docker logs -f <コンテナID> | grep "error"のようにパイプ(|)で繋ぐことで、リアルタイムでログを監視しながら「error」というキーワードを含む行だけを表示できる。リアルタイム監視から抜けるには、通常Ctrl + Cを押す。

docker logs -fコマンドはリアルタイム監視に役立つ一方で、いくつかの限界がある。このコマンドにはログローテーション管理機能がなく、ログが増大するとディスク容量を圧迫し、パフォーマンス問題やアプリケーション障害を引き起こす可能性がある。デフォルトではログはホストのファイルシステムに保存されるが、大量のログのアーカイブや長期保存のメカニズムは組み込まれていない。

また、docker logsコマンド自体にはログレベルやキーワード、タイムスタンプによる高度なフィルタリングオプションが限定的であり、grepとの組み合わせでは複雑な要件に対応しきれない場合がある。さらに、このコマンドは一度に一つのコンテナのログしか追跡できないため、複数のコンテナで構成されるアプリケーションでは管理が煩雑になる。ログの内容やパターンに基づいて自動的に警告を発する機能も持たないため、追加のツールやスクリプトが必要となる。

これらの限界を克服し、Dockerログをより効果的に監視するためには、SigNozのような高度なオブザーバビリティプラットフォームの利用が非常に有益である。SigNozは、アプリケーションとインフラストラクチャのエンドツーエンド監視、トラブルシューティング、警告機能を提供するオープンソースツールだ。

SigNozを活用したDockerログ監視では、まず既存のDockerコンテナ環境を用意し、SigNoz Cloudアカウントを設定する。次に、OpenTelemetry Collector(OTel Collector)というツールを導入する。OTel Collectorは、コンテナから出力されるログなどのテレメトリデータを収集、処理し、SigNozプラットフォームに安全に転送する役割を担う。具体的には、OTel CollectorはDockerログを特定のポートで受信し、正規表現を用いてログの内容をパース(解析)し、必要に応じてフィルタリングを行う。処理されたログデータはバッチ処理され、最適化された形式でSigNozの収集エンドポイントへエクスポートされる。

この設定をDocker Composeファイルに組み込むことで、otel-collectorサービスとログ収集用のlogspoutサービスをデプロイできる。logspoutは、稼働中の他のDockerコンテナからログを収集し、そのログをotel-collectorに転送する役割を持つ。otel-collectorは、転送されてきたログをSigNoz Cloudへ送信する。このように連携させることで、docker logs -fコマンドの制限を超え、ログの長期保存、高度なフィルタリング、集約、分析、そしてログパターンに基づく自動警告設定といった、より包括的なログ管理と監視が可能となる。コンテナを起動後、SigNoz Cloudのダッシュボードで、これらの設定を通じて集約されたログを視覚的に確認できるようになる。

Dockerログは、コンテナ化されたアプリケーションの健全性や挙動を理解するための重要な情報源である。docker logs -fコマンドはリアルタイム監視に便利だが、ログローテーションや長期保存、高度なフィルタリング、警告機能といった点で限界がある。これらの制約は、SigNozのような専用のオブザーバビリティツールを利用することで効果的に解決できる。

Dockerログは、デフォルトでホストシステム上の/var/lib/docker/containers/<コンテナID>/ディレクトリにJSON形式で保存され、コンテナが存在する限り永続的に残る。しかし、ディスク容量の管理やログの長期保管には、適切なログローテーションや管理プラクティスが必要である。ログをファイルに保存するには、docker logs <コンテナID> > container_logs.txtのようにリダイレクトすればよい。Dockerコンテナの実行状態はdocker psコマンドで確認できる。

関連コンテンツ

関連IT用語

関連ITニュース