如何将日志从 docker 容器转发到主机 journald/syslog 服务?

Posted

技术标签:

【中文标题】如何将日志从 docker 容器转发到主机 journald/syslog 服务?【英文标题】:How to forward logs from docker containers to host journald/syslog service? 【发布时间】:2018-04-24 02:19:36 【问题描述】:

我想将所有日志从 docker postgresql 容器发送到我的主机日志服务。

即我希望能够使用 tail -f /var/logs/messages 或 journald -f

在主机上读取 docker 容器日志

这是我的 docker-compose 配置:

  postgres:
    restart: unless-stopped
    image: postgres:9.6
    ports:
      - "5432:5432"
    logging:
      driver: syslog
      options:
        syslog-address: "udp://127.0.0.1:514"

我一直在尝试不同的解决方案,但每次我从 docker 收到错误:

postgres_1  | WARNING: no logs are available with the 'syslog' log driver

我无法查看主机上的日志。

我不确定,我做错了什么?

提前谢谢你

【问题讨论】:

这似乎是 docker-compose 问题,但我不完全确定 【参考方案1】:

目前,docker-compose 不支持除 json-file 和 journald https://github.com/docker/compose/blob/master/compose/container.py#L173以外的任何日志驱动

但是 journald 仍然没有向主机发布任何内容,它只是将所有内容打印到屏幕上,而没有 -d 选项。我认为这是你无法改变的内在行为

【讨论】:

以上是关于如何将日志从 docker 容器转发到主机 journald/syslog 服务?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Docker 容器中获取主机的 udev 事件?

将 Docker 部署到 AWS Elastic Beanstalk——如何将端口转发到主机? (端口绑定)

Docker:如何启动现有容器并转发端口?

将用户/组从主机映射到 docker 容器

一台物理机器部署多个docker

让 git 用户的 sshd 登录转发到(GitLab)Docker 容器