コンテナーからのログを含むログファイルはどこにありますか?


116

を使用していくつかのコンテナを実行していdocker-composeます。コマンドでアプリケーションログを表示できますdocker-compose logs。しかし、例えばどこかにそれを送るために生のログファイルにアクセスしたいですか?どこにありますか?それは各コンテナー(コンテナー内?)ごとの個別のログだと思いますが、どこにありますか?

回答:


190

コンテナのログは次の場所にあります。

/var/lib/docker/containers/<container id>/<container id>-json.log

(jsonであるデフォルトのログ形式を使用する場合)


3
のようなフォルダがたくさんあります004279dd2985037950beeba7e6fe45c10354476d3b82afb68e72dd612b03a8ff。特定のコンテナを探すためにどのフォルダを確認するのですか?
Praveen Sripati 2018

3
@PraveenSripati実行すると、実行中のコンテナのコンテナIDが最初の列に表示されますdocker ps
CS

1
@PraveenSripatiを書くとdocker ps、利用可能なすべてのコンテナとそのIDが取得されます。目的のコンテナーのIDをコピーし、次に/var/lib/docker/containers/run からコピーしますls | grep <paste the copied docker ID>。次に、その
docker

cd /var/lib/docker/containers/ -bash:cd:/ var / lib / docker / containers /:権限が拒否されました sudo cd /var/lib/docker/containers/ sudo:cd:コマンドが見つかりません
canbax

2
@Chris私はdocker ps --no-truncID全体を見るためにやらなければなりませんでした
Dan Z

97

docker inspect各コンテナで、ログの場所を確認できます。

docker inspect --format='{{.LogPath}}' $INSTANCE_ID

また、ログがそれらの集合サイズを管理する場所を見つけようとしている場合、またはログ自体のパラメーターを調整しようとしている場合は、次のことがわかります。

ログ用に予約されている容量を修正する

これは、ログ履歴をクリアする機能のリクエストから取得されます(問題1083))。

Docker 1.8およびdocker-compose 1.4には、docker composeログドライバーとlog-opt max-size を使用してログサイズを制限する方法がすでに存在します

mycontainer:
  ...
  log_driver: "json-file"
  log_opt:
    # limit logs to 2MB (20 rotations of 100K each)
    max-size: "100k"
    max-file: "20"

バージョン '2'のdocker composeファイルでは、構文が少し変更されました:

version: '2'
...
mycontainer:
  ...
  logging:
    #limit logs to 200MB (4rotations of 50M each)
    driver: "json-file"
    options:
      max-size: "50m"
      max-file: "4"

(どちらの構文でも、数字は引用符で囲まれた文字列として表されることに注意してください)

docker-compose logs終了しない可能性のある問題

  • 問題1866logsコンテナーが既に停止している場合、コマンドが終了しません

1
短いバージョン:docker inspect -f '{{.LogPath}}' $ INSTANCE_ID
Bienvenido David

12

各コンテナのログが使用している容量を確認するには、次のコードを使用します。

docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs ls -hl

sudo前に必要になる場合がありますls)。


許可が得られません。
Shakedk 2018

1
最後にsudoを追加すると役立ちました: docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs sudo du -hl
Shakedk 2018

2

以下でログファイルを直接表示するには、以下を使用します。

docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs sudo less

./viewLogs.sh CONTAINERNAMEとして実行


2

Windowsでは、デフォルトの場所は次のとおりC:\ProgramData\Docker\containers\<container-id>-json.logです。


これは、開発用のローカルコンテナーを実行するときのものです。おかげで-この情報を見つけることは非常に困難でした
パーシー・

1

2018年8月22日の時点で、ログは次の場所にあります。

/data/docker/containers/<container id>/<container id>-json.log

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.