Docker Nginx Log 三者的处理详解

因为公司的同事需要Nginx日志标准输出,也就是通过控制台处理,那么我们需要先将日志写到文件内:

error_log /var/log/nginx/error.log

access_log /var/log/nginx/access.log

处理方式无非有两种:

1.创建宿主机路径,然后将其挂载到容器内的nginx日志路径:

docker run --name docker_nginx -d -p 80:80\
 -v /var/log/nginx/log:/var/log/nginx\
--!-v:挂载日志目录

2.第二种就是落地到日志文件,然后导向标准输出:

RUN \

  ln -sf /dev/stdout /var/log/nginx/access.log && \
  ln -sf /dev/stderr /var/log/nginx/error.log

听说第二种比较好!!!

这样日志问题就解决了!

补充知识:自定义docker nginx镜像无容器日志输出

刚好自己因为工作环境需要自己定制一个nginx镜像,生成之后,发现容器没有相关nginx日志输出

FROM env_centos:latest

COPY nginx.repo /etc/yum.repos.d/
# 注意,日志要重定向输出到stdout,否则无法看到容器日志输出
RUN \
  yum -y install nginx httpd-tools && \
  mkdir -p /data/nginx_conf/upstream && \
  mkdir -p /data/nginx_conf/vhosts && \
  rm -f /etc/nginx/conf.d/default.conf && \
  ln -sf /dev/stdout /var/log/nginx/access.log && \    > 这2行是关键,当然,这个要跟你的nginx配置文件匹配,不要照搬
  ln -sf /dev/stderr /var/log/nginx/error.log          > 这2行是关键

COPY nginx.conf /etc/nginx/nginx.conf

EXPOSE 80
#EXPOSE 443

CMD ["nginx", "-g", "daemon off;"]

最终的效果如下

#docker exec test123 ls -l /var/log/nginx/
lrwxrwxrwx 1 root root 11 Dec 29 10:51 access.log -> /dev/stdout
lrwxrwxrwx 1 root root 11 Dec 29 10:51 error.log -> /dev/stderr

以上这篇Docker Nginx Log 三者的处理详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • docker下安装Nginx的方法

    一. 环境说明 docker: 18.03.1-ce nginx: 1.15.1 二. 拉取最新的 Nginx 镜像 拉取镜像 $ docker pull nginx 查看当前镜像 $ docker images # 查询结果: REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 8b89e48b5f15 7 hours ago 109MB 三. 准备工作 本次将web服务部署在 /srv/web 目录下: 3.1 创建 /srv/web 目录 并

  • Docker部署nginx实现过程图文详解

    1.下载nginx [root@localhost my.Shells]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/redis latest 1e70071f4af4 6 weeks ago 106.7 MB [root@localhost my.Shells]# docker pull nginx //下载nginx Using default tag: latest Trying to pull reposit

  • docker部署nginx并且挂载文件夹和文件操作

    这段时间在研究docker,在部署nginx时遇到了坑,最主要的问题是在挂载文件和文件夹的时候不知道怎么挂载,经过反复实验以及查看网上的教程,先总结如下: 1首先pull下载nginx镜像包 docker pull nginx 2(关键)查看nginx镜像里面配置文件.日志等文件的具体位置,只有找到镜像配置文件的路径,后面挂载文件和文件夹才能覆盖这些路径 以终端的方式打开镜像容器 [root@docker2 nginx]# docker run -i -t nginx /bin/bash roo

  • Docker Nginx Log 三者的处理详解

    因为公司的同事需要Nginx日志标准输出,也就是通过控制台处理,那么我们需要先将日志写到文件内: error_log /var/log/nginx/error.log access_log /var/log/nginx/access.log 处理方式无非有两种: 1.创建宿主机路径,然后将其挂载到容器内的nginx日志路径: docker run --name docker_nginx -d -p 80:80\ -v /var/log/nginx/log:/var/log/nginx\ --!-

  • Docker 7 docker在阿里云的使用详解

    在传统模式中,开发团队在开发环境中完成软件开发,自己做了一遍单元测试, 测试通过,ᨀ交到代码版本管理库.运维把应用部署到测 试环境, QA 进行测试,没问题后通知部署人员发布到生产环境. 在上述过程中涉及到至少三个环境:开发.测试和生产.现实情况是,开发自测 没问题,但到了测试或者生产环境程序无法运行,让开发团队排查,经过长时间 排查最后发现是测试环境的一个第三方库过时了.这样的现象在软件开发中很普 遍,已经不适用如今的快速开发和部署.docker可以满足你的需求. 阿里云容器hub开发者平台,

  • docker资源限制和compose部署详解

    目录 一.私有仓库建立 二.Cgroup 资源配置方法 三.CPU使用率控制 使用 stress 工具测试 CPU 和内存 四. CPU 周期限制 五. CPU Core 控制 六. CPU 配额控制参数的混合使用 七. 内存限额 八.Block IO 的限制 九. bps 和 iops 的限制 十. 构建镜像(docker build)时指定资源限制 十一. compose部署 十二. consul部署 总结 一.私有仓库建立 docker pull registry 在docker 引擎终端

  • Nginx 多站点配置实例详解

    Nginx 多站点配置实例详解 在一台 VPS 上,我们有时候需要同时跑几个 virtualenv.比如 virtualenv app1 跑的是 Django 的一个应用,而 virtualenv app2 跑的是 Tornado.那么如何配置 Nginx,让它同时支持这两个 virtualenv 的运行呢? 首先是 Nginx 的主配置,位于 etc/nginx/ngnix.conf,让它保持默认就行: user nginx; worker_processes 1; error_log /va

  • Docker守护进程安全配置项目详解

    本文将为大家介绍docker守护进程的相关安全配置项目. 一.测试环境 1.1 安装 CentOS 7 CentOS Linux release 7.7.1908 (Core) 升级内核,重启 # yum update kernel [root@localhost docker]# uname -a Linux localhost 3.10.0-1062.12.1.el7.x86_64 #1 SMP Tue Feb 4 23:02:59 UTC 2020 x86_64 x86_64 x86_64

  • Nginx配置参数中文说明详解(负载均衡与反向代理)

    PS:最近在看<<高性能Linux服务器构建实战>>的Nginx章节,对其nginx介绍的非常详细,现把经常用到的Nginx配置参数中文说明摘录和nginx做负载均衡的本人真实演示实例抄录下来以便以后查看! Nginx配置参数中文详细说明 #定义Nginx运行的用户和用户组 user www www; # #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; # #全局错误日志定义类型,[ debug | info | notice | war

  • 基于docker 搭建Prometheus+Grafana的过程详解

    一.介绍Prometheus Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作.Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus.现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控. Prometheus基本原理是通过HTT

  • docker容器的几种存储详解

    目录 写在前面 几种存储挂载方式 1.bind mounts 2.volumes 3.tmpfs mount 存储数据共享 写在前面 我们在上篇学习了容器网络,对容器网络驱动bridge工作原理做了较为详细的介绍,今天小作文一起看看容器中另一个关键域-存储. 容器的存储可以分为两大类: 一种是与镜像相关的即我们在<docker容器技术基础之联合文件系统OverlayFS>一文提到的容器层Copy-On-Write特性.默认情况下,在容器内创建的所有文件都存储在可写容器层上,这种直接将文件存储在

  • Android Handle原理(Looper,Handler和Message三者关系案例详解

    介绍 前面的内容对Handler做了介绍,也讲解了如何使用handler,但是我们并不知道他的实现原理.本文从源码的角度来分析如何实现的. 首先我们得知道Handler,Looper,Message Queue三者之间的关系 - Handler封装了消息的发送,也负责接收消.内部会跟Looper关联. - Looper 消息封装的载,内部包含了MessageQueue,负责从MessageQueue取出消息,然后交给Handler处理 - MessageQueue 就是一个消息队列,负责存储消息

  • JavaScript es6中var、let以及const三者区别案例详解

    首先,一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系?         ECMAScript是一个国际通过的标准化脚本语言.JavaScript由ECMAScript和DOM.BOM三者组成.可以简单理解为:ECMAScript是JavaScript的语言规范,JavaScript是ECMAScript的实现和扩展.         2011 年,ECMAScript 5.1 版发布.之前我们大部分人用的也就是ES5         2015 年 6 月,ECM

随机推荐