【初心者向け】Dockerコンテナのログ確認方法まとめ|トラブルシュートの第一歩!

Docker

Dockerを使っていると、アプリケーションの不具合や設定ミスなどが発生したときに「まずはログを確認したい!」という場面が必ず出てきます。

しかし、Docker初心者にとっては「どこでログを確認できるの?」「コンテナが止まった後でも見られるの?」と疑問に思うこともあるでしょう。

この記事では、Dockerコンテナのログをもっとも基本的な方法から、ちょっと便利なオプションや注意点まで、わかりやすく解説します。

スポンサーリンク

Dockerログの基本確認コマンド:docker logs

Dockerコンテナのログを見るには、以下のように docker logs コマンドを使います。

docker logs コンテナ名またはコンテナID

たとえば、myapp という名前のコンテナであれば:

docker logs myapp

このコマンドを実行すると、コンテナで標準出力(stdout)または標準エラー出力(stderr)に出力された内容が表示されます。

コンテナ名がわからない場合

まずは稼働中のコンテナ一覧を確認しましょう:

docker ps

停止中も含めたすべてのコンテナを見たい場合:

docker ps -a

よく使うログ確認オプション

① リアルタイムでログを確認:-f(フォロー)

docker logs -f myapp

ログが更新されるたびにリアルタイムで追従して表示されるため、動作確認やデバッグに便利です。tail -f のような使い方ができます。

終了するには Ctrl+C を押します。

② 最新のログだけ確認:--tail

docker logs --tail 100 myapp

最新100行だけ表示します。大量のログが出るコンテナでも効率的にチェックできます。

③ 時間で絞り込む:--since / --until

docker logs --since 10m myapp
docker logs --since "2024-01-01T10:00:00" myapp

--since--until を使えば、特定の時間帯のログだけを確認することができます。

④ タイムスタンプを表示:-t

docker logs -t myapp

各ログエントリの前に、ログが生成された時刻を表示します。

イベントの発生順や時間間隔を確認するのに便利です。

⑤ 組み合わせて使う

これらのオプションは組み合わせて使用できます:

# 最新50行を時刻付きでリアルタイム表示
docker logs -f -t --tail 50 myapp

# 過去1時間のログだけを表示
docker logs --since 1h myapp

コンテナが停止していてもログは見られる?

はい、基本的にログはコンテナが停止していても確認可能です。

ただし、コンテナを削除(docker rm)した場合は、そのログも一緒に消えてしまいます。

ログを保持しておきたい場合は、ログの外部出力設定(例:ログドライバやボリュームマウント)を使いましょう。

停止したコンテナのログを見る例

# 停止中のコンテナを確認
docker ps -a

# 停止中のコンテナでもログを確認可能
docker logs 停止中のコンテナID

コンテナのログを永続保存するには?

Dockerのログはデフォルトでホストマシンの /var/lib/docker/containers/ 配下に保存されますが、これをより適切に管理するには以下の方法がおすすめです:

ログドライバで外部システムに送る

Dockerでは、様々なログドライバが用意されています:

  • json-file: デフォルト。JSONファイルとして保存
  • syslog: システムのsyslogに送信
  • journald: systemdのjournaldに送信
  • fluentd: Fluentdに送信
  • awslogs: Amazon CloudWatch Logsに送信
  • splunk: Splunkに送信

コンテナ起動時にログドライバを指定する例:

docker run --log-driver=syslog --name myapp nginx

ログの容量制限を設定する

デフォルトのjson-fileドライバでも、ログが大きくなりすぎないように設定できます:

docker run --log-opt max-size=10m --log-opt max-file=3 --name myapp nginx

これにより、10MBごとにローテーションし、最大3ファイルまで保存されます。

ログをホストのファイルに直接保存

アプリケーション側でログファイルを書き出し、それをボリュームマウントでホストと共有する方法:

docker run -v /host/path/logs:/app/logs --name myapp myapplication

ログドライバの確認:

docker inspect --format='{{.HostConfig.LogConfig.Type}}' コンテナ名

ログ確認での実践的なシナリオ

アプリケーションのエラーを追跡する

# エラーメッセージを検索
docker logs myapp | grep -i error

# 特定のエラーコードを検索
docker logs myapp | grep "500 Internal Server Error"

起動時の問題を診断する

# コンテナ起動時の最初のログを確認
docker logs --tail 50 myapp

ログをファイルに保存する

# ログをファイルに保存
docker logs myapp > myapp_logs.txt

# 圧縮して保存(大量ログの場合)
docker logs myapp | gzip > myapp_logs.gz

まとめ

Dockerコンテナのログ確認は、アプリの状態を把握し、トラブルの原因を突き止める第一歩です。

特に以下のポイントを押さえておくと安心です:

  • docker logs で標準出力・エラー出力を確認
  • -f--tail などのオプションで見やすく
  • --since/--until で時間帯を絞り込む
  • コンテナ削除前にログの保全を検討
  • 重要なアプリケーションは適切なログ設定を事前に行う

ログを制する者は、Docker運用を制します。ぜひ今日から docker logs を活用して、快適でスマートなコンテナ管理を始めてみてください!

覚えておくと便利なコマンド集

# 基本的なログ確認
docker logs myapp

# リアルタイムで監視
docker logs -f myapp

# 最新50行だけ表示
docker logs --tail 50 myapp

# 今日のログだけ表示
docker logs --since "$(date -d today 00:00:00)" myapp

# エラーを検索
docker logs myapp | grep -i error

# タイムスタンプ付きで最新のログを確認
docker logs -t --tail 20 myapp

コメント

タイトルとURLをコピーしました