1

アプリケーション サーバーを実行している docker コンテナーがあります。アプリケーション ログが生成され、特定のディレクトリに保存されます。私のシナリオでは、複数のログ ファイルとトレースが生成され、その場所に保存されています。

これらのログにアクセスするには複数の方法があることを理解できます-など

docker exec -it <container_id> bash
ssh into the container (when the keys are set while creating the container)

上記の 2 つの例とは別に、別のコンテナー (nginx Web サーバーを実行している) を介してログにアクセスしたいと考えています。理論的には、アプリ サーバー (最初のコンテナー) 用の Docker コンテナーを作成するときに「--volumes-from」を使用するという概念で達成できることは理解できますが、それを機能させる方法はわかりません。

私の要件は、ログが生成されるたびに、他のコンテナーの Web サーバーを介して提供する必要があることです。ディレクトリ リストのように、(ボリュームを介して) ログ ディレクトリ全体のディレクトリ リストを表示する方法はありますか?

私はこのようなことを試しましたが、期待どおりに動作しません

docker run --name=log_webserver -p 80 --volumes-from logvol:/website_files nginx

docker run --name appcontainer -m 1024 -p 9080 -v sysvol:/var/log/rsyslog -v logvol:/opt/servers/simpleappserver/logs krckumar/simpleappserver

ログを公開する他の方法はありますか? 提案してください。

4

1 に答える 1

2
docker run --name container1 -v /website_files
docker run --name container2 --volumes_from container1

ログを公開するには ....

docker logs -f container1

これは、ENTRYPOINT スクリプトでログを tail -f する場合に機能します。docker はプロセス中心であるため、tail -f はコンテナーの終了も防ぎます。tail -f が終了しないため、コンテナが終了することはありません。内部で何が起こっているかを調べることができます

docker exec -it container1 bash

これ以上質問はありません。

PS 複数のコンテナーを使用する場合は、習得が容易で完全に docker コマンド自体に基づいている docker-compose の使用を検討することをお勧めします。

于 2016-03-08T10:39:43.487 に答える