docker logs命令docker logs是Docker原生提供的日志查看工具,适用于快速获取容器标准输出(stdout)和标准错误(stderr)的日志内容。
-f或--follow选项,持续输出容器最新日志(类似tail -f),例如:docker logs -f debian_container
--tail指定显示的最近日志行数(如--tail 100显示最后100行),避免输出过多内容,例如:docker logs --tail 100 debian_container
--since(从某时间点起)和--until(到某时间点止)过滤日志,支持相对时间(如10m表示10分钟前)和绝对时间(如2025-10-01T10:00:00),例如:docker logs --since 30m debian_container # 查看最近30分钟的日志
docker logs --since "2025-10-01T00:00:00" --until "2025-10-01T23:59:59" debian_container # 查看指定日期的日志
docker logs <容器名/ID>,输出容器自启动以来的所有日志(若日志过长,可配合less或grep进一步处理)。部分应用程序会将日志写入容器内的特定文件(如/var/log/syslog、/var/log/nginx/error.log),需通过docker exec进入容器查看:
docker exec -it <容器名/ID> /bin/bash(或/bin/sh,取决于容器内Shell类型),进入容器的命令行环境,例如:docker exec -it debian_container /bin/bash
cat:一次性输出文件全部内容(适合小文件),例如:cat /var/log/syslog
less:分页查看文件内容(适合大文件,支持上下翻页),例如:less /var/log/syslog
tail:实时查看文件最新内容(类似docker logs -f),例如:tail -f /var/log/nginx/error.log
exit或按Ctrl+D退出容器。journalctl若Docker服务本身或系统服务的日志未通过docker logs捕获,可使用journalctl(systemd日志管理工具)查看:
journalctl -u docker.service,输出Docker守护进程的所有日志,例如:journalctl -u docker.service
-t选项过滤容器ID或名称(需先通过docker ps获取),例如:journalctl -u docker.service -t debian_container
-f选项,持续输出Docker服务的最新日志,例如:journalctl -u docker.service -f
--since和--until选项,例如:journalctl -u docker.service --since "2025-10-01" --until "2025-10-02"
```。
获取日志后,可通过以下命令进行快速分析与过滤:
grep筛选包含特定关键字的日志行(如ERROR、WARN),例如:docker logs debian_container | grep "ERROR"
wc -l统计日志行数(如统计错误日志数量),例如:docker logs debian_container | grep "ERROR" | wc -l
json-file驱动会记录),可使用awk提取时间字段并排序,例如:docker logs debian_container | awk -F'["time":"|"]' '{print $2}' | sort | uniq -c
docker logs -f debian_container > debian_container.log
```。
长期运行的容器会产生大量日志,需通过配置json-file驱动(Docker默认驱动)限制日志大小和数量:
/etc/docker/daemon.json(若文件不存在则创建),添加以下内容:{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m", // 单个日志文件最大10MB
"max-file": "3" // 最多保留3个日志文件(当前+2个轮转)
}
}
sudo systemctl restart docker
docker inspect查看容器的日志配置,例如:docker inspect --format '{{.HostConfig.LogConfig}}' debian_container
```。
对于生产环境,建议使用集中式日志管理工具,实现日志的集中存储、搜索、可视化和告警:
docker run --name dozzle -d --volume=/var/run/docker.sock:/var/run/docker.sock -p 8080:8080 amir20/dozzle:latest
访问http://<服务器IP>:8080即可查看所有容器的实时日志。Filebeat收集Docker日志(配置filebeat.yml),Logstash处理日志,Kibana创建仪表盘(如展示错误日志趋势、容器资源使用情况)。fluent.conf配置Docker日志驱动,将日志发送到Fluentd进行处理。