Docker 容器日志管理入门:从 docker logs 到日志轮转
刚接触 Docker 的朋友,第一个困惑往往是:容器里应用打的日志到底去哪了?今天这篇短文就带大家从最基础的 docker logs 用起,再聊聊日志文件过大时的轮转配置,帮你避开新手期最常见的磁盘告警。
一、先看日志:docker logs
容器启动后,应用输出到标准输出(stdout)和标准错误(stderr)的内容,会被 Docker 的日志驱动收集起来。查看它们只需要一条命令:
docker logs my-container
几个常用参数建议记住:
-f:实时跟踪输出,效果类似tail -f,联调时最常用;--tail 100:只看最后 100 行,日志量大时避免刷屏;--since 30m:只看最近 30 分钟的日志,配合--until可以圈定时间范围;-t:在每行前面加上时间戳,排查“什么时候出的事”特别有用。
组合示例,实时查看带时间戳的最后 200 行:
docker logs -f --tail 200 -t my-container
二、日志存在哪:默认的 json-file 驱动
默认情况下 Docker 使用 json-file 日志驱动,日志以 JSON 格式保存在宿主机的 /var/lib/docker/containers/<容器ID>/ 目录下。可以用下面命令确认某个容器的日志驱动类型:
docker inspect --format='{{.HostConfig.LogConfig.Type}}' my-container
三、别让日志把磁盘写满:配置日志轮转
长期运行的容器,日志文件会越滚越大,线上不少“磁盘写满”的事故根源就是它。建议在 /etc/docker/daemon.json 里加上轮转限制:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
含义是:单个日志文件超过 10MB 就轮转,最多保留 3 个历史文件。修改后执行 systemctl restart docker 使配置生效。如果只想给单个容器设置,也可以在 docker run 时加上 --log-opt max-size=10m --log-opt max-file=3。
四、生产环境的几个小建议
- 关键业务建议把日志集中收集(比如 ELK、Loki),不要只依赖宿主机本地文件;
- 应用尽量只往 stdout 和 stderr 打日志,这是十二要素应用推荐的做法,也方便容器平台统一收集;
- 定期执行
docker system df检查磁盘占用,顺手清理无用镜像和已停止的容器。
结语
日志是容器世界的“黑匣子”。掌握 docker logs 的常用参数、配好日志轮转,就能避开大多数新手期的磁盘告警。下次容器出问题,先 docker logs 看一眼,答案往往就在最后几十行里。
- 点赞
- 收藏
- 关注作者
评论(0)