私は 'docker logs'に表示したいログファイルに対して、/ dev/stdoutにリンクするシンボリックリンクのnginxメソッドを使用していますが、これは動作しません。マルチプロセスドッカーコンテナからのログ
シンボリックリンクが存在する(/ dev/stdoutを指している)場合は、(私が知る限り)何も書きませんが、削除すれば/ etc/crontabのシンプルなcronジョブでテストしましたシンボリックリンクとファイルに書き込みます。この作業は必要があります:私はは/ dev/stdoutをにエコーあれば、それは「ドッカログ」には見られないが
はまた、それは
質問...コマンドラインに戻ってecho'dされますか? (それはnginxで動作するようです)。そうでなければ、どのようにしてログを「セカンダリ」プロセスから取得してドッカーログに表示させるのでしょうか。このため、公式バグレポートを作成しhttps://github.com/nginxinc/docker-nginx/blob/a8b6da8425c4a41a5dedb1fb52e429232a55ad41/Dockerfile
:
nginxのDockerfileがシンボリックリンクの方法を示す:参照用
https://github.com/docker/docker/issues/19616
マイDockerfile:
FROM ubuntu:trusty
#FROM quay.io/letsencrypt/letsencrypt:latest # For testing
ENV v="Fri Jan 22 10:08:39 EST 2016"
# Setup the cronjob
ADD crontab /etc/crontab
RUN chmod 600 /etc/crontab
# Setup letsencrypt logs
RUN ln -sf /dev/stdout /var/log/letsencrypt.log
# Setup cron logs
RUN ln -sf /dev/stdout /var/log/cron.log
RUN ln -sf /dev/stdout /var/log/syslog
# Setup keepalive script
ADD keepalive.sh /usr/bin/keepalive.sh
RUN chmod +x /usr/bin/keepalive.sh
ENTRYPOINT /usr/bin/keepalive.sh
crontabファイル:
* * * * * root date >> /var/log/letsencrypt.log
keepalive.shスクリプト
#!/bin/bash
# Start cron
rsyslogd
cron
echo "Keepalive script running!"
while true; do
echo 'Sleeping for an hour...'
sleep 10
done
...あなたの質問は何ですか? – Sobrique
Ha ...ありがとう、編集を参照してください! – geekscrap
私はコンテナのログを管理することをあきらめて、代わりにlogstashを使ってelasticsearchにできるだけ多くを試してみてください。少しのセットアップオーバーヘッドがありますが、全体的にはそれほど痛みを伴いません。 – Sobrique