温馨提示×

Linux Docker日志如何查看

小樊
94
2025-09-18 13:03:31
栏目: 智能运维

Linux下查看Docker日志的常用方法

一、使用docker logs命令(最常用)

docker logs是Docker原生提供的日志查看工具,用于获取容器的**标准输出(stdout)标准错误(stderr)**日志,适用于大多数日常运维场景。

  • 基本用法:直接指定容器名称或ID,查看自启动以来的所有日志。
    示例:docker logs my_containermy_container为容器名称或ID,可通过docker ps获取)。
  • 实时跟踪日志:添加-f参数,实时输出容器最新日志(类似tail -f),按Ctrl+C停止。
    示例:docker logs -f my_container
  • 查看最后N行:使用--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守护进程日志(引擎级日志)

若需排查Docker引擎本身的问题(如容器无法启动、守护进程崩溃),需查看守护进程日志,其位置因Linux发行版而异:

  • Systemd系统(如Ubuntu 16.04+、CentOS 7+):使用journalctl命令查看。
    示例:journalctl -u docker(实时查看)、journalctl -u docker --since "2024-01-01"(查看指定时间后日志)。
  • Upstart系统(如Ubuntu 14.04):日志文件通常位于/var/log/upstart/docker.log,直接用cattail查看。
    示例:cat /var/log/upstart/docker.log

三、直接访问容器日志文件(默认路径)

Docker默认使用json-file日志驱动,容器日志以JSON格式存储在宿主机的/var/lib/docker/containers/<容器ID>/<容器ID>-json.log路径下。可通过以下步骤查看:

  1. 获取容器ID:docker ps(列出运行中的容器)或docker ps -a(列出所有容器)。
  2. 查看日志路径:docker inspect --format='{{.LogPath}}' <容器ID>(输出日志文件的完整路径)。
  3. 读取日志文件:使用catlesstail命令查看。
    示例:cat /var/lib/docker/containers/abc123/abc123-json.logabc123为容器ID)。

四、进入容器内部查看应用日志

若应用程序将日志输出到容器内部的特定文件(如/var/log/app.log),可通过docker exec命令进入容器,再使用系统命令查看:

  1. 进入容器Shell:docker exec -it <容器ID> /bin/bashbash为容器内的Shell,若容器无bash,可替换为sh)。
  2. 查看日志文件:使用cattailless命令。
    示例:cat /var/log/app.log/var/log/app.log为应用日志路径,需根据实际情况调整)。

五、配置日志驱动(高级场景)

默认的json-file驱动适合大多数场景,但在生产环境中,可能需要将日志发送到远程服务器(如syslog、ELK)或第三方日志平台(如Fluentd、Splunk),此时需配置日志驱动:

  • 修改Docker守护进程配置:编辑/etc/docker/daemon.json(若文件不存在则创建),添加日志驱动配置。
    示例(syslog驱动):
    {
      "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参数。
    示例(fluentd驱动):
    docker run --log-driver=fluentd --log-opt fluentd-address=localhost:24224 --name my_container my_image

0