我正在部署一个Nginx
容器,并在标准Dockerfile
日志中使用这些命令重定向到容器日志
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log
如果我删除上述命令,则会按预期写入日志access.log
和文件。error.log
如何将日志保存在文件中并将它们发送到容器日志?
1-下面的命令不会重定向 to 的内容,/var/log/nginx/access.log
而是/dev/stdout
从/dev/stdout
to创建了一个符号链接/var/log/nginx/access.log
。换句话说,/var/log/nginx/access.log
只是一个符号链接。
ln -sf /dev/stdout /var/log/nginx/access.log
# ls -alh /var/log/nginx/access.log
lrwxrwxrwx 1 root root 11 Nov 23 01:12 /var/log/nginx/access.log -> /dev/stdout
2- 出于两个原因,根本不建议将文件存储在 docker 容器中。首先,一旦重新创建容器,文件将丢失。其次,这些文件可能会增长到巨大的大小,尤其是在这些文件没有日志轮换的情况下。您可以使用 FluentD 或配置 docker 本身将日志转发到外部服务器或主机节点上的文件,而不是在容器内保留副本。
您可以尝试让日志写入文件,然后在入口点跟踪文件。
tail -f /var/log/nginx/access.log /var/log/nginx/error.log