1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerコンテナのログローテート設定

Posted at

概要

コンテナのログは、以下のコマンドで確認んできる。

docker logs -f コンテナ名orコンテナID

そしてこれは、dockerホストの

/var/lib/docker/containers/コンテナID/コンテナID-json.log

に記載されている。
コンテナの運用をしているとこのログがどんどんたまってしまいサーバのディスクを圧迫する恐れがある。そのためログの管理、ログローテートの設定を行う必要がある。

設定させる方法はいくつかあるので、こちらに記載する。

全体的にログローテートの設定を行う

以下のようにファイルを編集する。

vi /etc/docker/daemon.json

そしてlog-optsを設定する、
以下のような設定だと、

  • 20Mバイトのログを、
  • 10世代まで
    保持するという内容である。
daemon.json
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "20m",
    "max-file": "10"
  }
}

その後、以下のようにdockerのサービスを再起動する。

sudo systemctl restart docker.service

これにより、このdockerホスト上で動くコンテナ全体に、上記の内容で設定したログローテートが適応される。

docker-composeで設定する。

docker-compose.ymlに記載して設定する場合は以下の通り。今回はnginxのコンテナを例に実行している。loggingという内容の中に設定する事で可能になる。

version: '3'
services:
  app:
    image: nginx:latest
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "5"
    volumes:
      - ./src:/var/www/html
    ports:
      - 80:5412

docker runコマンドで設定する

docker runコマンドは運用ではあまり使わないかもしれないが、設定する場合は以下のようにオプションを設定する。

 sudo docker run -d --rm --log-opt max-size=100k max-file=3

参考サイト

実はこのlog-optのオプションは、--log-driverに指定するログドライバによって設定できる内容が変わるため、オプションの内容をhelpなどで調べてもよくわからない。今回はjson logging driverを設定しているので、以下リンク先を確認する。

なお、ログドライバについては以下を参考にする。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?