0%

How to rotate docker log json files

緣由

docker 在運作的時候會記錄每一筆 stdout 還有 stderr,寫在一個 log file 裡面,通常是長這樣
/var/lib/docker/containers/[container-id]/[container-id]-json.log
然後久了之後,這檔案會超級大,到某一天發現硬碟快爆了的時候你就會發現

所以可以透過官方給的文件做一些 rotation 的設定
https://docs.docker.com/config/containers/logging/configure/

實際操作

如果要手動刪除那個檔案可以用這個指令

1
$ sudo truncate -s 0 <logfile>

建立一個 /etc/docker/daemon.json
內容用以下即可

1
2
3
4
5
6
7
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "10"
}
}

重新吃一下設定檔還有重新啟動 docker service

1
2
$ systemctl daemon-reload
$ systemctl restart docker

這樣應該就行了