docker logs命令(基础且最常用)docker logs是Docker原生提供的日志查看工具,适用于大多数场景。
docker ps获取容器ID或名称(如my_nginx),再执行:docker logs <容器ID或名称>
tail -f):-f或--follow参数,持续输出容器最新日志(容器停止后流中断):docker logs -f <容器ID或名称>
--tail限制行数(如--tail 50显示最后50行,--tail all显示全部):docker logs --tail 50 <容器ID或名称>
--since(开始时间)和--until(结束时间)筛选,时间格式支持时间戳(如2025-01-01T00:00:00)或相对时间(如1h表示1小时前、30m表示30分钟前):docker logs --since "2025-01-01T00:00:00" --until "2025-01-02T00:00:00" <容器ID或名称>
docker logs --since 1h <容器ID或名称> # 查看1小时内的日志
-t或--timestamps参数,在每行日志前添加具体时间(便于定位问题):docker logs -t <容器ID或名称>
docker ps -q(获取所有运行中容器的ID),批量查看日志:docker logs $(docker ps -q)
docker ps -aq(获取所有容器的ID):docker logs $(docker ps -aq)
若容器内的日志未通过标准输出(stdout/stderr)输出,而是写入容器内的文件(如/var/log/nginx/error.log),可通过docker exec进入容器查看:
docker exec -it <容器ID或名称> /bin/bash # 进入容器
tail -f /var/log/nginx/error.log # 查看容器内日志文件(以Nginx为例)
exit # 退出容器
若需排查Docker服务本身的问题(如守护进程崩溃、容器无法启动),可查看Docker引擎日志:
journalctl查看Docker服务的日志:sudo journalctl -u docker.service # 查看所有Docker日志
sudo journalctl -u docker.service -n 100 # 查看最近100条日志
/var/log/upstart/docker.log,用cat或tail查看:cat /var/log/upstart/docker.log
sudo tail -f /var/log/upstart/docker.log # 实时查看
json-file(日志存储在/var/lib/docker/containers/<容器ID>/<容器ID>-json.log),可通过daemon.json修改(如改为syslog发送到系统日志):sudo vim /etc/docker/daemon.json
添加以下内容(示例为syslog驱动):{
"log-driver": "syslog",
"log-opts": {
"syslog-address": "udp://localhost:514"
}
}
重启Docker生效:sudo systemctl restart docker
以上方法覆盖了从基础到高级的Docker日志查看需求,可根据实际场景选择合适的方式。