Docker 编写全局级别的日志记录
Docker compose global level logging
我知道对于最新的 docker 组合,我们可以在每个服务的基础上指定日志记录。例如:-
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
我的 compose 文件中有大量容器。我可以为 docker 守护程序本身指定日志记录配置。我只是想知道是否可以在全局级别为 docker 撰写文件指定日志记录配置。像这样
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
目前无法。您可以使用 YAML 锚点将相同的结构注入每个服务,而不是重复它。
您还可以为此配置 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 所说),您可以使用 "extension field" 语法:
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
我知道对于最新的 docker 组合,我们可以在每个服务的基础上指定日志记录。例如:-
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
我的 compose 文件中有大量容器。我可以为 docker 守护程序本身指定日志记录配置。我只是想知道是否可以在全局级别为 docker 撰写文件指定日志记录配置。像这样
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
目前无法。您可以使用 YAML 锚点将相同的结构注入每个服务,而不是重复它。
您还可以为此配置 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 所说),您可以使用 "extension field" 语法:
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