概要
コンテナのログは、以下のコマンドで確認んできる。
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を設定しているので、以下リンク先を確認する。
なお、ログドライバについては以下を参考にする。