Dockerの世界では、Dockerコンテナ(つまり、実行中の画像)のログを簡単に見ることができます。しかし、イメージの作成中に、通常は複数のコマンドを発行します。たとえば、ノードプロジェクトの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が言うように、ビルドコマンドへの単一の変更(実行コマンドへの多くの変更の代わり)ですべてのビルドの出力をログに記録できます。
docker build -t my-image . | tee my-image.build.log
--rm=true
を使用せずにビルドする場合、すべての中間コンテナーがあり、各コンテナーには確認できるログがあります
docker logs $container_id
最後に、画像内のレイヤーの履歴があることを忘れないでください。各コマンドの出力は表示されませんが、出力をログに記録せず、特に多くのキャッシュが使用されている場合、各レイヤーがどのビルドからのものであるかを知るすべてのコマンドに役立ちます。
docker history my-image
これを使用: https://github.com/jcalles/docker-wtee
手順を読んで、フィードバックをください。
または...
実行中のコンテナからログを取得する必要があり、コンテナにボリュームが公開されている場合、これを実行します:
docker run --rm -it --name testlogs --link <CONTAINERNAME/ID> --network CONTAINERNETWORK -p PORT:8080 --volumes-from CONTAINERNAME/ID javiercalles/wtee sh