Dockerコンテナのログローテーション設定

Docker

説明

コンテナで運用していると、どんどんログがたまってしまい、サーバの容量を圧迫してしまいます。
それを防ぐためのログの管理が必要です。

環境:CentOS7, Docker, docker-compose

コンテナのログの見方

通常コンテナのログを見る際は、

docker logs -f [コンテナ名|コンテナID]

で十分ですが、じゃあコンテナのログはいったいどこに置かれているかというと、

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

になります。

全てのコンテナにログローテション設定

/etc/docker/daemon.jsonファイルを新規作成→サービス再起動します。
サービス再起動後に新規で作成されたコンテナが新しく反映されるようになります。
既存のコンテナ反映されません。

下記は10Mのログを5世代まで持てるようにします。

$ vi /etc/docker/daemon.json 
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "5"
  }
}

[root@hogehoge]$ systemctl daemon-reload
[root@hogehoge]$ systemctl restart docker

各コンテナにログローテション設定(docker-compose編)

docker-compose.ymlに記載することで、各コンテナにログローテションを設定することができます。

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

コメント

タイトルとURLをコピーしました