在docker compose中指定max log json文件大小

dai*_*yue 8 docker docker-compose

我试图指定json-filein 的最大文件大小docker-compose.yml,像这样,

log-opt:
  max-size=50m
Run Code Online (Sandbox Code Playgroud)

但当我试图docker-compose up,它给我一个错误,

ERROR: In file './docker-compose.yml', service 'log-opt' must be a mapping not a string.
Run Code Online (Sandbox Code Playgroud)

怎么解决?

PS.我在用docker 1.11.2

Mat*_*hew 16

你的yaml语法不太正确.该文件说,这应该是options没有log-opt(https://docs.docker.com/compose/compose-file/#/logging).试试这个?

services:
    service_name:        
        logging:
            driver: "json-file"
            options:
                max-size: "50m"
Run Code Online (Sandbox Code Playgroud)

您应该在每个服务中定义日志记录部分,而不是直接在docker-compose的根目录中.


Sav*_*hew 16

max-size存储日志文件,直到它们达到最大大小 VALUE(例如:“2048m”)。

具有最大大小的 docker-compose 文件配置示例。

version: '3.2'
services:
  logstash:
    image: docker.elastic.co/logstash/logstash:7.8.0
    command:  --config.reload.automatic  
    user: savio:savio
    restart: unless-stopped
    logging:
      driver: "json-file"
      options:
        max-size: "2048m"
    ports:
      - "9600:9600" 
Run Code Online (Sandbox Code Playgroud)

如果您要对已运行的容器进行更改,则需要停止并删除该容器,然后重新启动。

检查日志设置

]# docker container inspect -f '{{.HostConfig.LogConfig}}' <ContainerName>
Run Code Online (Sandbox Code Playgroud)

欲了解更多详情:链接

  • 如果达到日志文件的最大大小限制会发生什么? (3认同)