插件窝 干货文章 docker logs保存在哪里

docker logs保存在哪里

日志 Docker container 容器 813    来源:    2025-04-28

Docker 容器的日志默认存储位置和访问方式如下:


1. 日志存储位置

  • 默认存储路径
    Docker 容器日志存储在宿主机的 /var/lib/docker/containers/<container_id>/ 目录下,文件名为 <container_id>-json.log
    <container_id> 是容器的完整 ID,可通过 docker ps --no-trunc 查看)

  • 日志驱动影响
    路径可能因配置的日志驱动(--log-driver)不同而变化:

    • json-file(默认):上述路径。
    • syslog/journald:日志由系统服务管理(如 /var/log/syslogjournalctl -u docker)。
    • awslogs/gelf:日志发送到外部服务(如 AWS CloudWatch)。

2. 查看日志的方法

方式一:通过 docker logs 命令

docker logs <container_name_or_id>          # 查看实时日志
docker logs --tail 100 <container_id>      # 查看最后100行
docker logs -f <container_id>              # 跟踪日志(类似 tail -f)

方式二:直接访问日志文件

# 找到容器ID
docker ps --no-trunc

# 进入日志目录(需root权限)
sudo ls /var/lib/docker/containers/<container_id>/

# 查看日志内容
sudo cat /var/lib/docker/containers/<container_id>/<container_id>-json.log

方式三:第三方工具

  • 如果配置了 ELK、Fluentd 等日志收集工具,日志可能被转发到其他存储(如 Elasticsearch)。

3. 日志清理与管理

  • 手动清理
    删除日志文件后需重启 Docker 服务(不推荐直接操作文件)。

    sudo truncate -s 0 /var/lib/docker/containers/*/*-json.log
    
  • 自动轮转
    /etc/docker/daemon.json 中配置日志大小和轮转策略:

    {
    "log-driver": "json-file",
    "log-opts": {
      "max-size": "10m",
      "max-file": "3"
    }
    }
    

    重启 Docker 生效:

    sudo systemctl restart docker
    

4. 注意事项

  • 日志驱动:通过 docker inspect <container_id> 查看 LogConfig.Type 确认当前驱动。
  • 磁盘空间:长时间运行的容器可能导致日志占满磁盘,建议定期清理或配置轮转。

如有其他需求(如自定义日志路径),可进一步调整 Docker 配置或使用日志收集工具。