nginxイメージのDockerfileにあるように、nginxイメージでは、access.logerror.logの内容を標準出力とエラー出力に出力して、 docker logsコマンドでログが見れるようにしています

これは、以下のDocumentationでも紹介されています

View logs for a container or service | Docker Documentation

これを参考に、自前で作るDockerfileでも同じ事をしたかったので試してみた

Dockerコンテナを手っ取り早くcrond化してコンテナ内でコマンドを定期実行する手順メモで作ったcrondのイメージを流用し、ログを標準出力に出力してみます

Dockerfile

1
2
3
4
5
6
7
8
9
10
11
FROM alpine:3

# /dev/stdoutにシンボリックリンクをつくる
RUN ln -sf /dev/stdout /var/tmp/1.log
RUN ln -sf /dev/stdout /var/tmp/2.log

# 適当に1分おきにechoする
RUN echo '*/1 * * * * echo "1" >> /var/tmp/1.log' >> /var/spool/cron/crontabs/root
RUN echo '*/1 * * * * echo "2" >> /var/tmp/2.log' >> /var/spool/cron/crontabs/root

ENTRYPOINT ["crond", "-f"]

実行してみる

1
2
3
4
5
6
7
8
9
10
11
// ビルド
$ docker build -t test .

// 実行
$ docker run -d --rm test | xargs docker logs -f
1
2
1
2
1
2