【发布时间】:2020-08-26 05:39:19
【问题描述】:
我有一个跨 4 个树莓派(1 个经理,3 个工人)运行的 docker swarm。今天,当我在主节点上诊断崩溃并发现在该主机上运行的容器进程正在将其日志写入主机上的 /var/log 时,我有点惊讶。
我认为默认情况下(我的 swarm 使用这里的 docker 指令https://docs.docker.com/engine/swarm/swarm-tutorial/create-swarm/ 中的默认/基本配置),docker 将其日志作为一部分写入 json-log 输出Docker自己在主机上的日志结构。是我看到的预期行为,还是我严重错误配置/误解了什么?
例如,为我的 swarm 运行 nginx 入口节点的letsencrypt 映像正在将其日志写入我主机上的/var/log/letsencrypt。如果没有我在容器规范中明确挂载 /var/log 目录,我不会想到这可能。
似乎正在将这些 certbot 调试日志写入主机上的 /var/log/letsencrypt/letsencrypt.log:
2020-07-19 07:11:46,615:DEBUG:certbot.main:certbot version: 0.31.0
2020-07-19 07:11:46,616:DEBUG:certbot.main:Arguments: ['-q']
2020-07-19 07:11:46,616:DEBUG:certbot.main:Discovered plugins: PluginsRegistry(PluginEntryPoint#manual,PluginEntryPoint#null,PluginEntryPoint#standalone,PluginEntryPoint#webroot)
2020-07-19 07:11:46,638:DEBUG:certbot.log:Root logging level set at 30
2020-07-19 07:11:46,639:INFO:certbot.log:Saving debug log to /var/log/letsencrypt/letsencrypt.log
这是我的 nginx docker-compose 文件:
version: '3'
services:
nginx:
image: linuxserver/letsencrypt
volumes:
- /share/data/nginx/:/config
deploy:
mode: replicated
placement:
constraints:
- "node.role==manager"
ports:
- 80:80
- 443:443
environment:
- PUID=1001
- PGID=1001
- URL=mydomain.com
- SUBDOMAINS=www,mysite1,mysite2
- VALIDATION=http
- EMAIL=myemail@myprovider.com
- TZ=Europe/London
networks:
- internal
- monitoring_front-tier
networks:
internal:
external: true
monitoring_front-tier:
external: true
【问题讨论】:
标签: docker-swarm