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公式ドキュメント (英語)
- Dockerドキュメント日本語化プロジェクト
- Docker情報 (Qiita)