1. ホーム
  2. docker

[解決済み] dockerイメージのログを見るには?

2022-03-05 03:49:59

質問

dockerの世界では、dockerコンテナ(つまり、実行中のイメージ)のログを簡単に見ることができます。しかし、イメージ作成時には、通常、複数のコマンドを発行します。例えば、nodeプロジェクトでnpm installコマンドを実行します。そのようなコマンドのログも見ることができれば有益です。ドキュメントをざっと探したのですが、dockerイメージのログを取得する方法は見つかりませんでした。可能でしょうか?

解決方法は?

最も簡単な方法は tee を使用して、すべてのコマンド出力のコピーをログファイルに送信します。もし画像に添付したいのであれば、画像の中のログファイルに、以下のような感じで実行コマンドを出力してください。

RUN my-install-cmd | tee /logs/my-install-cmd.log

そして、一回限りのコンテナを素早く実行して、ログの内容を見ることができます。

docker run --rm my-image cat /logs/my-install-cmd.log

画像に添付されたログが必要ない場合は、JHarrisが言うように、ビルドコマンドを1回変更するだけで、すべてのビルドの出力をログに記録できます(実行コマンドをたくさん変更するのではありません)。

docker build -t my-image . | tee my-image.build.log

を使用せずにビルドした場合 --rm=true で確認できるログがあります。

docker logs $container_id

そして最後に忘れてはいけないのが、画像内のレイヤーの履歴です。各コマンドの出力は表示されませんが、出力を記録しないコマンドや、特にキャッシュを多用している場合に各レイヤーがどのビルドから来たものかを知るのに便利な機能です。

docker history my-image