容器日志问题
默认情况下,容器将 stdout/stderr 输出到 json-file 日志驱动,日志文件存在宿主机 /var/lib/docker/containers/<container-id>/<container-id>-json.log。如果不加限制,日志会无限增长,占满磁盘。
1. 查看日志
docker logs <容器名> # 打印全部 docker logs --tail 100 <容器名> # 最后100行 docker logs --since 10m <容器名> # 最近10分钟 docker logs -f <容器名> # 实时跟踪
2. 限制日志大小(运行时设置)
docker run -d --name log-demo \ --log-opt max-size=10m \ --log-opt max-file=3 \ nginx
max-size=10m:单个日志文件最大 10MBmax-file=3:最多保留 3 个文件(轮转)
3. 全局默认限制(修改 /etc/docker/daemon.json)
{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }
修改后重启 Docker:systemctl restart docker
4. 日志驱动切换(例如使用 syslog, fluentd)
5. 清理日志(手动)
ls -lh /var/lib/docker/containers/*/*-json.log # 清空某个容器的日志 truncate -s 0 /var/lib/docker/containers/<container-id>/<container-id>-json.log
ls -lh /var/lib/docker/containers/*/*-json.log # 清空某个容器的日志 truncate -s 0 /var/lib/docker/containers/<container-id>/<container-id>-json.log
更安全的方式:docker logs <容器名> > /dev/null 2>&1 不会清空,需要配合 --log-opt 轮转。
