docker容器日志问题
- 背景
-
- 如何处理日志问题
-
- 主要通过日志轮询方式处理。
- [修改 Docker 配置](#修改 Docker 配置)
- 日志快速清理
背景
Docker 默认使用的是 json-file 日志驱动。日志会一直写,一直写,没有限制、没有轮转、没有清理!
日志默认位置:
python
/var/lib/docker/containers/<container-id>/<container-id>-json.log
当你发现它时,可能已经:
- 占了几十个 G
- 吃满了磁盘
- 服务都挂了!
如何处理日志问题
主要通过日志轮询方式处理。
python
docker run -d \
--name myapp \
--log-driver json-file \
--log-opt max-size=10m \
--log-opt max-file=3 \
myapp:latest
- max-size=10m:单个日志文件最大 10MB
- max-file=3:最多保留 3 个轮转文件(最多 30MB)
容器总日志控制在 30MB 内
修改 Docker 配置
该配置适用于所有容器,只对操作之后创建的容器生效!
编辑配置文件 /etc/docker/daemon.json
python
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "5"
}
}
重启 Docker 服务:
python
systemctl restart docker
日志快速清理
仅推荐在磁盘告急时临时使用!
python
find /var/lib/docker/containers -name *-json.log -exec truncate -s 0 {} \;