Ведение журнала в локальный системный журнал внутри контейнера centos7

Я хотел бы, чтобы мой контейнер 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

Но, похоже, ничего не помогает.

ОС контейнера и версия докера:

 [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

Любые идеи?

Спасибо


person loshri    schedule 25.03.2018    source источник


Ответы (2)


Умные люди из rsyslog собрали вместе следующий образ Docker: https://hub.docker.com/r/rsyslog/rsyslog_base_centos7 Это позволяет использовать ваш вариант использования:

c) хотите запустить клиентскую машину, где rsyslog обрабатывает сообщения журнала v (конфиг CentOS 7 по умолчанию НЕ работает внутри контейнера, но этот контейнер имеет исправленную конфигурацию!)

Вот URL-адрес патча, который вы можете добавить в конфигурацию докера CentOS7, чтобы заставить его работать: .github.com/oleksandriegorov/2718a7e35b8d17ada934b651d627ab97

Конечно, перезапустите rsyslogd, чтобы изменения вступили в силу.

person Oleksandr Iegorov    schedule 12.03.2020
comment
Я еще не пробовал CentOS8. Буду там - попробую. - person Oleksandr Iegorov; 09.11.2020

Если я вас правильно понял, вы хотите запустить rsyslog внутри контейнера, но хотите, чтобы данные журнала rsyslog поступали с хост-компьютера. По умолчанию это невозможно из-за изоляции.

Это интересный вариант использования, и нам, вероятно, следует добавить средство отслеживания проблем по адресу https://github.com/rsyslog/rsyslog-docker.

Вы, вероятно, можете достичь своей цели, смонтировав /dev/log в контейнер, но в зависимости от хост-ОС это также требует некоторой дополнительной работы.

rsyslog/rsyslog_base_centos7 разработан с целью предоставления базового контейнера, который можно использовать для того, чтобы приложения внутри контейнера использовали ведение журнала rsyslog.

Также обратите внимание на этот диалог в Твиттере: https://twitter.com/rgerhards/status/978183898776686592 - обновления документации будут происходить после того, как у нас будет фактическая процедура.

Примечание. Этот ответ был полностью переписан, так как изначально я совершенно не понял сути.

person Rainer Gerhards    schedule 26.03.2018