Docker 容器日志管理入门:从 docker logs 到日志轮转

举报
yd_260072176 发表于 2026/10/24 00:55:13 2026/10/24
【摘要】 刚接触 Docker 的朋友,第一个困惑往往是:容器里应用打的日志到底去哪了?今天这篇短文就带大家从最基础的 docker logs 用起,再聊聊日志文件过大时的轮转配置,帮你避开新手期最常见的磁盘告警。 一、先看日志:docker logs容器启动后,应用输出到标准输出(stdout)和标准错误(stderr)的内容,会被 Docker 的日志驱动收集起来。查看它们只需要一条命令:dock...

刚接触 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。

四、生产环境的几个小建议

  1. 关键业务建议把日志集中收集(比如 ELK、Loki),不要只依赖宿主机本地文件;
  2. 应用尽量只往 stdout 和 stderr 打日志,这是十二要素应用推荐的做法,也方便容器平台统一收集;
  3. 定期执行 docker system df 检查磁盘占用,顺手清理无用镜像和已停止的容器。

结语

日志是容器世界的“黑匣子”。掌握 docker logs 的常用参数、配好日志轮转,就能避开大多数新手期的磁盘告警。下次容器出问题,先 docker logs 看一眼,答案往往就在最后几十行里。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。