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
コメント