记录到centos7容器内的本地syslog

时间:2018-03-25 10:18:28

标签: docker rsyslog

我希望我的centos7容器将消息记录到/ var / log / messages

[root@gen-r-vrt-057-009 ~]# docker exec -it rsyslog_base_centos7 "/bin/bash"
[root@gen-r-vrt-057-009 /]# logger "lior"
[root@gen-r-vrt-057-009 /]# cat /var/log/messages
[root@gen-r-vrt-057-009 /]#

我安装了rsyslog,尝试以多种方式运行容器:

docker run -dit --name rsyslog_base_centos7 --network host  --privileged rsyslog/rsyslog_base_centos7:latest /usr/sbin/init
docker run -dit --name rsyslog_base_centos7  --log-driver=syslog  --network host  --privileged rsyslog/rsyslog_base_centos7:latest /usr/sbin/init
docker run -dit --name rsyslog_base_centos7  --log-driver=syslog  --network host -v /dev/log:/dev/log --privileged rsyslog/rsyslog_base_centos7:latest /usr/sbin/init

但似乎没有什么可以做到的。

Container os和docker version:

 [root@gen-r-vrt-057-009 /]# cat /etc/redhat-release
 CentOS Linux release 7.4.1708 (Core)
 [root@gen-r-vrt-057-009 /]# exit
 [root@gen-r-vrt-057-009 ~]# docker -v
 Docker version 17.03.2-ce, build f5ec1e2

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:1)

rsyslog中的聪明人将以下Docker映像放在一起: https://hub.docker.com/r/rsyslog/rsyslog_base_centos7 它可以满足您的用例:

c)想在运行rsyslog处理日志消息的客户端计算机上运行v (默认的CentOS 7配置在容器内不起作用,但是 该容器具有更正的配置!)

这里是修补程序的URL,您可以将其扔到CentOS7 docker config中以使其起作用: https://gist.github.com/oleksandriegorov/2718a7e35b8d17ada934b651d627ab97

当然,重新启动rsyslogd以应用更改。

答案 1 :(得分:0)

如果我理解正确,您希望在容器内运行rsyslog,但希望从主机生成rsyslog日志数据。默认情况下,由于隔离,这是不可能的。

这是一个有趣的用例,我们可能应该在https://github.com/rsyslog/rsyslog-docker添加问题跟踪器。

您可以通过将/ dev / log挂载到容器中来实现目标,但取决于主机操作系统,还需要一些额外的工作。

rsyslog / rsyslog_base_centos7旨在提供一个基本容器,您可以使用该容器使内部容器使用rsyslog日志记录。

请同时查看此Twitter对话:https://twitter.com/rgerhards/status/978183898776686592 - 一旦我们有实际程序,即将发布文档更新。

注意:这个答案完全被重写了,因为我最初完全忽略了这一点。