在 Docker 中查看容器日志有多种方式,以下是详细方法和使用场景说明:
docker logs
命令基本语法:
docker logs [容器名或ID]
常用参数:
- -f
或 --follow
:实时跟踪日志(类似 tail -f
)
- --tail N
:显示最后 N 行日志(例如 --tail 100
)
- -t
或 --timestamps
:显示时间戳
- --since
:显示某个时间点之后的日志(例如 --since 2023-01-01
)
示例:
# 查看容器最近日志
docker logs my_container
# 实时跟踪日志
docker logs -f my_container
# 显示最后100行并带时间戳
docker logs --tail 100 -t my_container
如果容器内应用将日志写入文件(如 /var/log/app.log
),可以进入容器查看:
# 进入容器
docker exec -it my_container /bin/bash
# 查看日志文件
cat /var/log/app.log
或直接通过宿主机查看:
docker exec my_container cat /var/log/app.log
docker-compose
查看日志如果是通过 docker-compose
启动的服务:
# 查看所有服务的日志
docker-compose logs
# 查看指定服务(如web)的日志并实时跟踪
docker-compose logs -f web
Docker 默认使用 json-file
驱动存储日志,可通过以下命令检查:
docker inspect --format='{{.HostConfig.LogConfig.Type}}' my_container
如果使用其他驱动(如 syslog
、journald
):
- syslog:需通过系统工具(如 journalctl -u docker
)查看。
- journald:使用 journalctl
查看:
bash
journalctl -u docker CONTAINER_NAME=my_container
Docker 日志文件默认存储在 /var/lib/docker/containers/[容器ID]/[容器ID]-json.log
。如需清理:
# 临时清理(需重启容器)
truncate -s 0 /var/lib/docker/containers/*/*-json.log
# 限制日志大小(启动容器时配置)
docker run --log-opt max-size=10m --log-opt max-file=3 my_image
问题:docker logs
无输出
解决:确认容器内应用是否将日志输出到 stdout/stderr
(Docker 仅捕获这两种流)。
问题:日志文件过大
解决:通过 --log-opt
限制日志大小(见上文)。
通过以上方法,你可以灵活查看和管理 Docker 容器日志。根据实际需求选择合适的方式即可!