Dockerで使用するUbuntuイメージ(18.04)には最低限のパッケージしか同梱されていないので、syslogを使いたい場合は以下の手順で別途インストールする。

Dockerfileとrsyslogデーモンを起動するスクリプトを用意

⦿ Dockerfile

FROM ubuntu:18.04

RUN apt-get update && \
  apt-get install -y rsyslog

COPY startup.sh /startup.sh
RUN chmod 744 /startup.sh

CMD ["/startup.sh"]

⦿ startup.sh

#!/usr/bin/env bash

service rsyslog start

Dockerイメージビルド & 実行

⦿ ビルド

$ docker image build -t test .

⦿ 実行

$ docker run --privileged test

--privilegedはコンテナ内の全てのデバイスへのアクセスを可能にするオプションであるが、これを付けないとdocker run時に以下の権限エラーになり、rsyslogデーモンが起動できない。

rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
rsyslogd: activation of module imklog failed [v8.32.0 try http://www.rsyslog.com/e/2145 ]

参考サイト

元記事はこちら

DockerのUbuntuコンテナ上にsyslogを導入する手順