Linux下查看Docker日志的常用方法
docker logs命令(最常用)docker logs是Docker原生提供的日志查看工具,用于获取容器的**标准输出(stdout)和标准错误(stderr)**日志,适用于大多数日常运维场景。
docker logs my_container(my_container为容器名称或ID,可通过docker ps获取)。-f参数,实时输出容器最新日志(类似tail -f),按Ctrl+C停止。docker logs -f my_container。--tail参数限制显示行数,避免日志过多。docker logs --tail 10 my_container(仅显示最后10行)。--since(从某时间后)和--until(到某时间前)筛选日志,时间格式支持5m(5分钟前)、1h(1小时前)、2024-01-01(具体日期)。docker logs --since 5m --until 1h my_container(查看5分钟前到1小时前的日志)。若需排查Docker引擎本身的问题(如容器无法启动、守护进程崩溃),需查看守护进程日志,其位置因Linux发行版而异:
journalctl命令查看。journalctl -u docker(实时查看)、journalctl -u docker --since "2024-01-01"(查看指定时间后日志)。/var/log/upstart/docker.log,直接用cat或tail查看。cat /var/log/upstart/docker.log。Docker默认使用json-file日志驱动,容器日志以JSON格式存储在宿主机的/var/lib/docker/containers/<容器ID>/<容器ID>-json.log路径下。可通过以下步骤查看:
docker ps(列出运行中的容器)或docker ps -a(列出所有容器)。docker inspect --format='{{.LogPath}}' <容器ID>(输出日志文件的完整路径)。cat、less或tail命令查看。cat /var/lib/docker/containers/abc123/abc123-json.log(abc123为容器ID)。若应用程序将日志输出到容器内部的特定文件(如/var/log/app.log),可通过docker exec命令进入容器,再使用系统命令查看:
docker exec -it <容器ID> /bin/bash(bash为容器内的Shell,若容器无bash,可替换为sh)。cat、tail或less命令。cat /var/log/app.log(/var/log/app.log为应用日志路径,需根据实际情况调整)。默认的json-file驱动适合大多数场景,但在生产环境中,可能需要将日志发送到远程服务器(如syslog、ELK)或第三方日志平台(如Fluentd、Splunk),此时需配置日志驱动:
/etc/docker/daemon.json(若文件不存在则创建),添加日志驱动配置。{
"log-driver": "syslog",
"log-opts": {
"syslog-address": "tcp://192.168.0.42:123" // syslog服务器地址
}
}
重启Docker使配置生效:sudo systemctl restart docker。docker run命令中添加--log-driver和--log-opt参数。docker run --log-driver=fluentd --log-opt fluentd-address=localhost:24224 --name my_container my_image。