【问题标题】:Docker compose global level loggingDocker 撰写全局级别的日志记录
【发布时间】:2016-07-25 12:07:19
【问题描述】:

我知道对于最新的 docker compose,我们可以指定基于每个服务的日志记录。例如:-

version: '2'

services:
  Sachin:
   image: hike/ubuntu:14.04
   volumes:
     - .:/testDocker
   working_dir: /testDocker
   logging:
    driver: "json-file"
    options:
     max-size: "25m"
     max-file: "2"
command: python -u test.py

我的撰写文件中有大量容器。我可以为 docker 守护进程本身指定日志记录配置。我只是想知道是否可以在全局级别为 docker compose 文件指定日志记录配置。像这样的

version: '2'

services:
  Sachin:
   image: hike/ubuntu:14.04
   volumes:
     - .:/testDocker
   working_dir: /testDocker
logging:
 driver: "json-file"
 options:
  max-size: "25m"
  max-file: "2"
command: python -u test.py

【问题讨论】:

    标签: docker docker-compose dockerfile


    【解决方案1】:

    您还可以为此配置 Docker 默认值,您的所有容器都将具有该配置(您可以覆盖每个容器)。

    这里是一个使用 YAML 锚的解决方案示例:

    version: "2"
    
    services:
    
      proxy:
        build: proxy
        image: kinoulink/proxy
        ports:
          - 80:80
          - 443:443
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock:ro
        container_name: ktv_manager_proxy
        environment:
            - HTTP_AUTH_PASSWORD=$KTV_MANAGER_PASSWORD
        logging: &logging
          driver: "awslogs"
          options:
          awslogs-region: eu-west-1
          awslogs-group: docker
    
      rancher:
        image: rancher/server:v1.1.3
        volumes:
          - rancher_mysql:/var/lib/mysql
          - rancher_cattle:/var/lib/cattle
        labels:
          ktv.infra.proxy.domain: 'rancher'
          ktv.infra.proxy.port: '8080'
        logging:
          <<: *logging
    

    从 v3.4 开始(正如@tekHedd 所说),您可以使用“扩展字段”语法:

    version: "3.4"
    
    x-logging: 
          &default-logging
          driver: "awslogs"
          options:
          awslogs-region: eu-west-1
          awslogs-group: docker
    
    services:
    proxy:
        build: proxy
        image: kinoulink/proxy
        ports:
          - 80:80
          - 443:443
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock:ro
        container_name: ktv_manager_proxy
        environment:
            - HTTP_AUTH_PASSWORD=$KTV_MANAGER_PASSWORD
        logging: *default-logging
    
      rancher:
        image: rancher/server:v1.1.3
        volumes:
          - rancher_mysql:/var/lib/mysql
          - rancher_cattle:/var/lib/cattle
        labels:
          ktv.infra.proxy.domain: 'rancher'
          ktv.infra.proxy.port: '8080'
        logging: *default-logging
    

    【讨论】:

    【解决方案2】:

    目前不可能。您可以使用 YAML 锚点将相同的结构注入到每个服务中,而不是重复它。

    【讨论】:

      猜你喜欢
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多