如何查看 docker-compose 运行服务的日志输出?
查看 docker-compose 日志:docker compose logs -f 实时跟踪所有服务,-t 显示时间戳,跟服务名只看单个服务。本文介绍各种查看方式。
后台启动用 docker compose up -d,然后 docker compose logs -f -t 实时查看所有服务的日志(-f 跟踪、-t 带时间戳);只看某个服务:docker compose logs -f 服务名。
常用命令
# 后台启动所有服务
docker compose up -d
# 实时跟踪所有服务的日志(带时间戳)
docker compose logs -f -t
# 只看某个服务
docker compose logs -f web
# 只看最近 100 行
docker compose logs --tail=100 web
# 只看某个时间点之后
docker compose logs --since 10m web
退出日志查看不会停止服务
Ctrl+C 退出 logs -f 只是断开日志查看,容器继续运行——这和 docker compose up(前台模式)不同,前台模式下 Ctrl+C 会停止所有服务。
docker compose run 的日志
docker compose run 服务名 命令 用于一次性运行某个服务的命令,输出直接打在终端。如果之后想看已结束容器的输出:
docker compose ps -a # 找到容器
docker logs <容器名>
观测云对照
多服务环境下到每台机器逐容器看日志效率太低。观测云 DataKit 自动采集所有容器的 stdout/stderr,在观测云日志查看器中统一检索、过滤、告警,不需要逐个 docker compose logs。
常见问题(FAQ)
Q:logs 默认显示多少?
A:默认显示全部历史日志。大日志量时建议加 --tail=100 限制。
Q:多个服务的日志怎么区分?
A:docker compose logs 每行前缀会带服务名和容器名(彩色区分)。
Q:日志能导出到文件吗?
A:docker compose logs > all.log 导出快照;持续采集建议用日志平台而不是重定向。