2016-05-28 32 views
0

自分のアプリケーションが/ app/logs /フォルダにログを生成すると仮定します。便宜上、より良い監視のために複数のログファイルが生成されます(異なるランタイムコンテキストに基づいて)。 Dockerを使用してアプリケーションをコンテナ化すると、実行時にログフォルダに生成されたログにどのようにアクセスできますか?実行中のドッカーコンテナのログフォルダへのアクセス

私のアプリケーションは、ロギングのnohupはタイプを持っていないし、確かに

docker logs -f <container-id> 

動作するようには思えません。

答えて

2

docker logsは、実行しているプロセスのstderrとstdoutのみを表示します。

コンテナは、一時的/スケーラブルなデザインに適合しているため、集中型ロギングシステムでうまく機能します。 sysloglogglygrayloglogstashfluentdpush your docker logs over the network to a serverを使用してください。すべてのアプリとコンテキストログに1か所でアクセスできます。

それはあまりにも...

のように思える場合、あなたはあなたができる共有データボリューム

docker volume create logs 
docker run -v logs:/apps/logs <image> 

にログインすることができますホスト

docker exec <container-id> cat /apps/logs/context.log 

から直接ログにアクセスすることができますホストディレクトリにログする

docker run -v /apps/logs:/apps/logs <image> 
+0

情報をありがとう。すべての方法は非常に適切であり、自明であった。 – t6nand

+0

私は今質問がほとんどありません。共有データボリュームへのロギングまたはホストディレクトリでの直接ロギングには、docker execコマンドが必要です。その場合、メモリリークの可能性があるためです。過去には、完全にロックされた/フリーズされた状態で私のマシンにつながり、マシンを手動で再起動する必要がありました。 – t6nand

+0

ロギング自体は '実行する'プロセスによって行われ、 'exec'はロギングに関与してはいけません。 'exec'を使わずに共有ボリュームとホストボリュームにアクセスすることができます。必要に応じて 'exec'を使わずにコンテナ内のデータにアクセスする方法があります。例えば' cp'です。 – Matt

関連する問題