dockerで開発環境を作っていてコンテナ内でsyslogに出力したいなーと思って結構ハマって下記参考URLのエントリに助けてもらったのでご紹介。
(「docker syslog」で素朴に検索するとdockerのlogging driverとしてのsyslogがヒットしてしまい難儀した)
dockerコンテナ(centos7)でsyslogに出力するためのポイントは4点。
- rsyslogをyum installする
- /etc/rsyslog.confを編集する
- /etc/rsyslog.d/listen.confを編集する
- /usr/sbin/rsyslogd を起動する
必要な処理を Dockerfile にまとめると、
FROM centos:centos7
RUN yum update -y
RUN yum install -y rsyslog
RUN echo '[ -f /usr/sbin/rsyslogd ] && /usr/sbin/rsyslogd' >> $HOME/.bash_profile
RUN sed -i -e '/$ModLoad imjournal/s/^/#/' /etc/rsyslog.conf
RUN sed -i -e 's/$OmitLocalLogging on/$OmitLocalLogging off/' /etc/rsyslog.conf
RUN sed -i -e '/$IMJournalStateFile/s/^/#/' /etc/rsyslog.conf
RUN sed -i -e '/$SystemLogSocketName/s/^/#/' /etc/rsyslog.d/listen.conf
ENTRYPOINT tail -f /dev/null
だいたいこんな感じ。