【问题标题】:Where does `docker-compose logs` pull from?`docker-compose logs` 是从哪里来的?
【发布时间】:2019-02-07 07:29:53
【问题描述】:

像大多数对稀疏的Docker docs page herehere 投反对票的人一样,我对docker-compose logs 的所作所为感到困惑。

当我运行cd /apps/laradock/ && docker-compose logs -f nginx 时,我看到了很多天前到现在的很长的输出。

这是从哪个或哪些文件中提取的?

我能找到的唯一 nginx 日志文件是 /apps/laradock/logs/nginx/error.log,它没有太多内容(所以不一样)。

有没有办法“日志轮换”或以其他方式确保我不会在日志记录上花费超过一定数量的磁盘?

【问题讨论】:

    标签: docker nginx docker-compose laradock


    【解决方案1】:

    这取决于使用哪个logging driver

    您可以通过以下方式检查为 Docker 守护程序配置了哪一个:

    docker info -f '{{.LoggingDriver}}'
    

    默认驱动程序json-file 登录到:

    /var/lib/docker/containers/<container-id>/<container-id>-json.log
    

    Docker compose 然后聚合 docker-compose.yml 中每个容器的日志。

    【讨论】:

      【解决方案2】:

      使用默认日志记录驱动程序json-file,您的日志存储在/var/lib/docker/containers/&lt;container-id&gt;/。请注意,此处记录的是来自容器 PID 1 的 stdout 和 stderr 的输出。

      对于“日志轮换”,json-file 驱动程序有一些选项可以传递给它来限制每个日志文件的大小,以及日志文件的最大数量。请参阅documentation 中的max-sizemax-file

      使用 docker-compose,您可以设置如下选项:

      version: '3'
      
      services:
        myservice:
          image: ...
          logging:
            options:
              max-file: "3"
              max-size: "50m"
      

      【讨论】:

      • 这个答案似乎是在正确的方向,但我只是看着我的docker-compose.yml,它说version: '2.1'并且文件中的任何地方都没有“记录”这个词.而且我不认为我在运行docker-compose logs -f nginx 时看到的是JSON 格式。知道我应该在哪里查看我当前的日志记录是如何配置的吗?谢谢。
      • 日志以 json 格式存储在磁盘上。但是当你运行docker-compose logs 时,它知道解析 json 并只输出原始文本。 compose 版本只是一个例子。 2.1 版支持logging 字段。您的撰写文件没有“日志记录”,因为它将所有内容都保留为默认值(即没有日志轮换)。
      猜你喜欢
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 2023-01-21
      相关资源
      最近更新 更多