使用docker logs命令可查看容器的**标准输出(stdout)和标准错误(stderr)**日志(Docker默认日志驱动为json-file,日志存储在宿主机中)。
<container_id_or_name>替换为容器的ID或名称(可通过docker ps获取运行中容器,docker ps -a获取所有容器)。docker logs <container_id_or_name>
docker ps -aq获取所有容器ID,批量查看日志。docker logs $(docker ps -aq)
若需实时查看容器日志(类似tail -f),添加-f或--follow选项:
docker logs -f <container_id_or_name>
按Ctrl+C可停止实时跟踪。
使用--tail选项指定显示最近的N条日志(避免日志过多):
docker logs --tail=100 <container_id_or_name> # 显示最近100条
结合-f可实现“实时查看最新100条日志”:
docker logs -f --tail=100 <container_id_or_name>
--since选项(支持ISO 8601格式或相对时间,如10m表示10分钟前)。docker logs --since="2025-10-01T12:00:00Z" <container_id_or_name> # 自2025-10-01 12:00:00以来的日志
docker logs --since=1h <container_id_or_name> # 自1小时以来的日志
--until选项(如查看2025-10-01 12:00:00至13:00:00的日志)。docker logs --since="2025-10-01T12:00:00Z" --until="2025-10-01T13:00:00Z" <container_id_or_name>
添加-t或--timestamps选项,在每条日志前添加UTC时间戳,便于定位问题:
docker logs -t <container_id_or_name>
若应用程序将日志写入容器内的文件(而非标准输出),可通过docker exec进入容器查看:
docker exec -it <container_id_or_name> /bin/bash # 进入容器的bash shell
cat、tail或less命令(如/var/log/my_app.log为应用程序日志路径)。cat /var/log/my_app.log # 查看完整日志
tail -f /var/log/my_app.log # 实时跟踪日志
less /var/log/my_app.log # 分页查看(按q退出)
为防止长期运行的容器日志占满磁盘,可在启动容器时配置日志轮转:
docker run --log-driver=json-file --log-opt max-size=10m --log-opt max-file=3 <image_name>
max-size=10m:单个日志文件最大10MB;max-file=3:最多保留3个日志文件(当前文件+2个轮转文件)。root用户或属于docker组);