Help us understand the problem. What is going on with this article?

docker logs で表示されるログの保存場所とローテート方法

More than 3 years have passed since last update.

docker でコンテナを起動したとき、コマンドとして指定したプロセスが標準出力・標準エラー出力に吐いたログは docker logs ${コンテナID} で閲覧できる。

自分で docker のサービスを運用するにあたって、このログが溜まりつづけてホスト側のディスクを圧迫してしまうのではないか?という懸念があったので、ログの保存場所やローテート方法を調べた。

ログの保存場所

そもそも docker にはこのログの保存の仕方をカスタマイズできる Logging Driver という仕組みがあるのだが、デフォルトでは json-file というドライバーが利用されている。

$ docker info | grep Log
Logging Driver: json-file

ドライバーが json-file の場合、docker inspect コマンドでログの保存場所を調べることができる。(他のドライバーについては未確認。)

$ docker inspect 8f18b6bfb58a | grep 'LogPath'
        "LogPath": "/var/lib/docker/containers/8f18b6bfb58aa60ea992374604532f75110dd07742cb511af516d72e63b44138/8f18b6bfb58aa60ea992374604532f75110dd07742cb511af516d72e63b44138-json.log",

$ cat /var/lib/docker/containers/8f18b6bfb58aa60ea992374604532f75110dd07742cb511af516d72e63b44138/8f18b6bfb58aa60ea992374604532f75110dd07742cb511af516d72e63b44138-json.log
## docker logs 8f18b6bfb58a したときと同じ出力が得られる

ログのローテート方法

上記のログはデフォルトではローテートされないので、docker run するときのオプションでローテート設定を指定してやる必要がある。

--log-opt max-size=[0-9]+[kmg]
--log-opt max-file=[0-9]+

100MB ごとにローテートして 10 世代まで保存するならこんな感じで docker run するとよい。

docker run -d --log-opt max-size=100m --log-opt max-file=10 my-docker-image

1 コンテナを延々と立ち上げっぱなしにするような用途で、標準出力・標準エラー出力に大量のログを出力しているとディスクを圧迫してしまう可能性があるので、設定しておいたほうがいいかも。

参考資料

tily
お気に入り ruby 使える python golang javascript 書いたことはある perl php 興味ある erlang 苦手 java
fjct
クラウド・IoT 関連サービスを開発・提供している企業です。(こちらは、富士通クラウドテクノロジーズの有志にて運営しております。)
https://fjct.fujitsu.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした