如何在ansible中指定docker的log-opt来限制容器的日志大小?

时间:2018-03-03 11:40:36

标签: docker logging ansible max-size

我正在使用ansible playbook在Jenkins中使用docker部署我的应用程序, 最近我想限制app容器的日志大小, 使用" docker run"有" -log-opt max-size = xxxm"选项, 但是如何在ansible playbook中添加相同的功能呢?

我试图将ansible playbook设置如下,但测试表明它不起作用。

  - name: start container
    docker_container:
      name: "{{docker_container}}"
      image: "{{docker_image}}"
      log_options:
        max-size: 256m
        max-file: 2
      volumes:
        - "/etc/timezone:/etc/timezone"
        - "/etc/localtime:/etc/localtime"
      published_ports:
        - "{{published_ports}}"
      recreate: yes

我想限制大小的容器的日志文件的位置如下文所示:

/var/lib/docker/containers/2fdcae9fb35f4954639a3ff254873f0ae8518f2ede011807/2fdcae9fb35f4954639a3ff254873f0ae8518f2ede0118072304077918deb20f-json.log

首先感谢您的回复:)

2 个答案:

答案 0 :(得分:0)

为什么不登录syslog?

你的ansible剧本看起来像这样:

  - name: start container
docker_container:
    name: "{{docker_container}}"
    image: "{{docker_image}}"
    volumes:
      - "/etc/timezone:/etc/timezone"
      - "/etc/localtime:/etc/localtime"
    published_ports:
      - "{{published_ports}}"
    recreate: yes
    log_driver: syslog
    log_options:
      tag: "{{docker_container}}"
      syslog-facility: local4

你的syslog配置看起来像这样(/etc/rsyslog.d/22-docker.conf):

local4.*         /var/log/docker.log

在我的情况下(Ubuntu 16.04),syslog会自动维护日志文件大小。

答案 1 :(得分:0)

我不知道你是否看到这个警告

[WARNING]: log_options is ignored when log_driver is not specified

您可以尝试设置 log_driver:json-file 如下

- name: Run docker container
  docker_container:
    name: "{{ docker_name }}"
    image: "test/test:{{ image_tag }}"
    log_driver: json-file
    log_options:
      max-size: 100m
    recreate: yes