【问题标题】:docker postfix - missing logs码头工人后缀 - 缺少日志
【发布时间】:2018-04-10 10:54:00
【问题描述】:

我这样创建了 docker 容器:

FROM debian

RUN export DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get install -y syslog-ng syslog-ng-core
RUN apt-get install -y postfix vim \
&& rm -rf /var/lib/apt/lists/*

CMD /etc/init.d/postfix start && /bin/bash

然后像这样开始:

docker run --name testmailsrv -p 25:25 -p 143:143 -p 993:993 -v mailsrvpostfixetc:/etc/postfix -v mailsrvdovecotetc:/etc/dovecot -it mailsrv/mailsrv-0.6:latest

我的 postrix 工作不正常,但我找不到任何日志来诊断它。没有文件 /var/log/mail.log,journalclt 没有输出,“docker logs”命令没有什么有趣的。 如何在 docker 中查看来自 postfix 的任何日志?

【问题讨论】:

    标签: docker logging postfix


    【解决方案1】:

    This image 建议:

    # Use syslog-ng to get Postfix logs (rsyslog uses upstart which does not seem
    # to run within Docker).
    run apt-get install -q -y syslog-ng
    
    expose 25
    cmd ["sh", "-c", "service syslog-ng start ; service postfix start ; tail -F /var/log/mail.log"]
    

    这可能更容易生成和查看这些日志(作为主线程的输出)


    另外,satnhak 建议在 the comments(2021 年):

    你可能还需要这个:syslog-ng/syslog-ng issue 2407

    那指的是syslog-ng/syslog-ng PR 2408: "system-source: check if /proc/kmsg can be open"。

    或者你需要在你的配置中:

        source s_local { 
            system(
                exclude-kmsg(yes)
            ); 
            internal(); 
        };
    

    satnhak 补充道:

    将其添加到 Dockerfile 中就可以了:

    RUN sed -i 's/system()/system(exclude-kmsg(yes))/g' \
        /etc/syslog-ng/syslog-ng.conf
    

    【讨论】:

    【解决方案2】:
    1. 安装 rsyslog

      apt-get install ryslog
      
    2. 启动 rsyslog

      service rsyslog start
      
    3. 重启后缀

      service postfix restart
      
    4. 你会发现/var/log/mail.log

    【讨论】:

      猜你喜欢
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多