如何在CentOS 7的docker容器中设置本地syslog-ng?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (292)

我想在docker中隔离一个测试环境,我在CentOS 6上这样做了。

在CentOS 7中,当我运行时,syslog-ng的配置是不同的。

/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)'

Dockerfile

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 
提问于
用户回答回答于

更改/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 

扫码关注云+社区

领取腾讯云代金券