容器日志查看
容器日志是排查问题的关键,下面介绍 Docker 日志查看方法。
docker logs 命令
Bash
# 查看容器日志
docker logs my-nginx
# 实时跟踪日志输出
docker logs -f my-nginx
# 查看最近 10 行
docker logs --tail 10 my-nginx
# 查看最近 10 行并实时跟踪
docker logs -f --tail 10 my-nginx
时间过滤
Bash
# 查看指定时间后的日志
docker logs --since 2024-01-01T10:00:00 my-nginx
# 查看最近 30 分钟日志
docker logs --since 30m my-nginx
# 查看指定时间前的日志
docker logs --until 2024-01-01T12:00:00 my-nginx
# 查看最近 1 小时日志
docker logs --since 1h --until now my-nginx
添加时间戳
Bash
# 显示时间戳
docker logs -t my-nginx
# 输出示例
2024-01-01T10:00:00.123456789Z 192.168.1.1 - - "GET / HTTP/1.1" 200
2024-01-01T10:00:01.123456789Z 192.168.1.2 - - "GET /api HTTP/1.1" 200
过滤日志内容
Bash
# 结合 grep 过滤关键字
docker logs my-nginx 2>&1 | grep "error"
# 实时跟踪并过滤
docker logs -f my-nginx 2>&1 | grep --line-buffered "error"
# 统计错误数量
docker logs my-nginx 2>&1 | grep -c "error"
Docker 日志包含标准输出(stdout)和标准错误(stderr),
2>&1合并两个流。
查看日志文件
Docker 日志默认存储在 /var/lib/docker/containers/ 目录:
Bash
# 查找容器日志文件路径
docker inspect --format='{{.LogPath}}' my-nginx
# 输出
/var/lib/docker/containers/a1b2c3d4e5f6/a1b2c3d4e5f6-json.log
# 直接查看日志文件
tail -f /var/lib/docker/containers/a1b2c3d4e5f6/a1b2c3d4e5f6-json.log
日志驱动配置
容器创建时可指定日志驱动:
Bash
# 使用 json-file 驱动(默认)
docker run -d --name my-nginx --log-driver json-file nginx
# 限制日志大小
docker run -d --name my-nginx \
--log-driver json-file \
--log-opt max-size=10m \
--log-opt max-file=3 \
nginx
# 使用 syslog 驱动
docker run -d --name my-nginx --log-driver syslog nginx
常用日志驱动:
| 驱动 | 说明 |
|---|---|
json-file | 默认,JSON 格式存储 |
journald | 写入 systemd journal |
syslog | 发送到 syslog 服务器 |
none | 禁用日志 |
local | 本地存储,更高效的格式 |
要点总结
docker logs查看容器日志,-f实时跟踪,--tail限制行数--since和--until按时间过滤日志-t显示时间戳,便于问题定位- 日志存储在
/var/lib/docker/containers/<id>/<id>-json.log - 生产环境建议配置
max-size和max-file防止日志占满磁盘
📝 发现内容有误?点击此处直接编辑