代码之家  ›  专栏  ›  技术社区  ›  Daniel YC Lin

如何在CentOS 7的docker容器中设置本地系统日志?

  •  1
  • Daniel YC Lin  · 技术社区  · 6 年前

    我想在docker中隔离一个测试环境,我是在CentOS 6上做的 How to let syslog workable in docker?

    在CentOS 7中,当我运行

    /usr/sbin/syslog-ng -F -p /var/run/syslogd.pid 
    

    出现以下错误消息,但配置文件中没有proc/kmsg。

    syslog-ng: Error setting capabilities, capability management disabled; error='Operation not permitted' 
    Error opening file for reading; filename='/proc/kmsg', error='Operation not permitted (1)'
    

    文档文件

    FROM centos
    RUN yum update --exclude=systemd -y \
      && yum install -y yum-plugin-ovl \
      && yum install -y epel-release
    RUN yum install -y syslog-ng syslog-ng-libdbi
    

    测试过程:

    docker build -t t1 .
    docker run --rm -i -t t1 /bin/bash
    

    在容器中,运行以下命令

    # check config, no keyword like proc/kmsg
    cd /etc/syslog-ng
    grep -r -E 'proc|kmsg'
    
    /usr/sbin/syslog-ng -F -p /var/run/syslogd.pid 
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Daniel YC Lin    6 年前

    将/etc/syslog ng/syslog-ng.conf从

    source s_sys {
      system();
      internal();
    };
    

    source s_sys {
      unix-stream("/dev/log");
      internal();
    };
    

    它仍然显示错误消息,但运行而不是退出

    syslog-ng: Error setting capabilities, capability management disabled; error='Operation not permitted' 
    

    为了解决这个问题 --no-caps 选项

    /usr/sbin/syslog-ng --no-caps -F -p /var/run/syslogd.pid