docker-compose runを使用してログ出力を表示するにはどうすればよいですか?


96

使用するdocker-compose upと、docker-compose.ymlファイル内のすべてのコンテナのログを確認できます。

ただし、使用するdocker-compose run appと、コンソール出力のみが表示されappapp依存するサービスは表示されません。他のサービスのログ出力をどのように確認できますか?


4
使用できますdocker-compose logs -f service_name
Xiongbing Jin 2016

また、docker-compose run実行するたびに新しいコンテナが作成されることにも注意してください。
jazgot 2016年

イムは、実行しているdocker-compose run、それは新しいコンテナを作成した場合だけそのいいので、私のテストを実行するためにcircleciに。主な問題は、依存サービスからのログ出力が表示されないことです。
sthomps 2016年

回答:


135

2019年7月1日更新

docker-compose logs <name-of-service>

ドキュメントから:

使用法:ログ[オプション] [サービス...]

オプション:

--no-colorモノクロ出力を生成します。

-f、-followログ出力をフォローします。

-t、-timestampsタイムスタンプを表示します。

--tail = "all"各コンテナのログの最後から表示する行数。

Dockerログを参照してください

Dockerコンポーズをデタッチモードで開始し、後ですべてのコンテナーのログにアタッチできます。ログの監視が終了したら、サービスシャットダウンせずにログ出力から自分自身を切り離すことができます。

  1. デタッチモードですべてのサービスdocker-compose up -d開始するために使用します-d)(デタッチモードではログは表示されません)
  2. 使用docker-compose logs -f -tする添付のログに自分自身を実行中のすべてのサービスに対し、-fログ出力とフォロー手段-tオプションは(参照タイムスタンプ与えドッカー参照
  3. Ctrl + zまたはCtrl + cを使用して、実行中のコンテナシャットダウンせずにログ出力から自分自身を切り離します

単一のコンテナのログに関心がある場合は、docker代わりにキーワードを使用できます。

  1. 使用する docker logs -t -f <name-of-service>

出力を保存します

出力をファイルに保存するには、logsコマンドに以下を追加します。

  1. docker-compose logs -f -t >> myDockerCompose.log

7
なぜこれが受け入れられた答えなのかわかりません。質問はdocker-composerunに関するもので、多くの場合、-rmを使用して実行するため、ログはありません。実行中のシェルスクリプトの出力を見たいのですが。
ジェームズ・オブライエン

2
これは有用な情報ですが、これは質問に対する答えではありません。JamesO'Brienが言った@として、質問は約あるdocker-compose runとに記載されているサービスからユニークな名前持っているそれらのサービスにアタッチdocker.compose.yml
TetraDev

20

ターミナル内のすべてのサービスからの出力ログを表示する場合。

docker-compose logs -t -f --tail <no of lines> 

例:すべてのサービスからの最後の5行の出力をログに記録したいとします

docker-compose logs -t -f --tail 5

特定のサービスからの出力ログに記録する場合は、次のように実行できます。

docker-compose logs -t -f --tail <no of lines> <name-of-service1> <name-of-service2> ... <name-of-service N>

使用法:

例えば。APIとポータルサービスがあるとすると、次のようなことができます。

docker-compose logs -t -f --tail 5 portal api

ここで、5は両方のログの最後の5行を表します。

参照:https//docs.docker.com/v17.09/engine/admin/logging/view_container_logs/


5
  1. 次のコマンドを使用して、コンテナをデタッチモードで起動します。 docker-compose up -d
  2. コンテナの使用を表示するには: docker ps
  3. コンテナのログを表示するには: docker logs <containerid>

1

残念ながら、とはdocker-compose logs別に実行する必要がありますdocker-compose run。これを確実に機能させるには、docker-compose run終了ステータスを抑制してから、ログをリダイレクトし、正しいステータスで終了する必要があります。

#!/bin/bash
set -euo pipefail
docker-compose run app | tee app.log || failed=yes
docker-compose logs --no-color > docker-compose.log
[[ -z "${failed:-}" ]] || exit 1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.