Nginx管理日志记录
您可以使用默认的日志记录或自定义日志记录。
使用默认的日志记录
默认情况下,NGINX镜像配置为将NGINX访问日志和错误日志发送到Docker日志收集器。这是通过将它们链接到stdout和stderr来完成的:然后所有来自这两个日志的消息都被写入到Docker主机上的文件/var/lib/docker/containers/container-ID/container-ID-json.log中。容器ID是创建容器时返回的长格式ID。要显示长格式ID,请运行命令:
docker inspect --format '{{ .Id }}' container-name
您可以使用Docker命令行和Docker Engine API来提取日志消息。
要从命令行提取日志消息,请运行命令:
docker logs container-name
要使用Docker远程API提取日志消息,请使用Docker Unix套接字发送GET请求:
curl --unix-sock /var/run/docker-sock http://localhost/containers/container-name/logs?stdout=1&stderr=1
要在输出中仅包含访问日志消息,请仅包含stdout=1。要将输出限制为错误日志消息,请仅包含stderr=1。有关其他可用选项,请参阅Docker Engine API文档的“获取容器日志”部分。
使用自定义日志记录
如果您想为某些配置块(如server {}和location {})不同地配置日志记录,请定义一个Docker卷以在容器中存储日志文件的目录,创建一个辅助容器以访问日志文件,并使用任何日志工具。为此,创建一个包含日志文件卷的新镜像。
例如,要将NGINX配置为将日志文件存储在/var/log/nginx/log中,请将此目录的VOLUME定义添加到Dockerfile中(假设内容和配置文件在容器中管理):
FROM nginx COPY content /usr/share/nginx/html COPY conf /etc/nginx VOLUME /var/log/nginx/log
然后,您可以创建一个镜像,并使用它来创建一个NGINX容器和一个具有访问日志目录权限的辅助容器。辅助容器可以安装任何所需的日志工具。
控制NGINX
由于无法直接访问NGINX容器的命令行,因此无法直接向容器发送NGINX命令。相反,可以通过Docker kill命令向容器发送信号。
要重新加载NGINX配置,请向Docker发送HUP信号:
docker kill -s HUP container-name
要重启NGINX,请运行此命令以重启容器:
docker restart container-name