现在和朋友一起搞点东西,部署都很简单,服务器上装个docker
,服务丢上去,写个docker compose配置就跑着.
有个服务最近流量涨的比较多,再加上有段时间没有部署,看服务器上的磁盘使用越来越多.
起初以为是应用的日志太多了,应用日志每天归档为gzip,保留60天,看了下并没有多少,用lsof检查也确认没有roll掉的被持有,再去容器内部看了下发现体积远没有这么大.
于是开始用du --max-depth=1
检查发现是/var/lib/docker/containers/
目录, 再一看容器id就是这个服务, 再定位是<container-id>-json.log
文件.
当时磁盘已经90%以上了,那就先直接truncate掉,运行:
1 | sudo truncate -s 0 /var/lib/docker/containers/<container-id>/<container-id>-json.log |
后续找了相关参数给他配置上.
如果是纯docker跑的,配置:
1 | docker run --log-opt max-size=1g --log-opt max-file=3 <image> |
docker compose的配置:
1 | version: '3' |
检查是否生效直接inspect一下:
1 | docker inspect --format='{{.HostConfig.LogConfig}}' <container-id> |
或者直接grep一下LogConfig
之前频繁开发部署,容器销毁重新构建没发现这个问题,也算是又增加了一点点小知识.
相关参考链接:
JSON File logging driver