校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 滾動 docker 中的 nginx 日志思路詳解

滾動 docker 中的 nginx 日志思路詳解

熱門標簽:如何分析地圖標注 大連400電話如何申請 新余高德地圖標注怎么修改 撫順地圖標注 外呼系統(tǒng)坐席費計入會計哪個科目 電銷機器人價值 高德地圖標注好做嗎 電銷機器人怎么接線路 達亞電銷機器人官網(wǎng)

docker使用

  1. docker ps 查看運行中的容器

  2. docker images 查看docker鏡像

  3. docker rm id(容器id)  刪除容器(容器id可以通過docker ps查看,容器必須停止后才能刪除)

    3.1 刪除全部的容器 docker rm `docker ps -a -q`

  4. docker stop  id(容器id) 停止容器運行

  5. docker rmi  id(鏡像id) 刪除鏡像

  6. docker pull ubuntu:16.04(鏡像名稱:版本號) 下載鏡像

  7. docker run -it ubuntu:16.04 創(chuàng)建并運行容器容器

    -t 表示在新容器內(nèi)指定一個偽終端或終端

    -i 表示允許我們對容器內(nèi)的 (STDIN) 進行交互

    -p 指定映射端口

    -d 在后臺運行容器并打印容器ID

    7.1 docker run -dit ubuntu:16.04 創(chuàng)建并后臺運行容器

    7.2 docker run -ditp 8080:8080(主機端口:容器端口) ubuntu:16.04 創(chuàng)建并后臺運行容器且映射容器的端口

  8. docker attach id(容器id) 進入正在運行中的容器環(huán)境

  9. 退出容器

    9.1 exit 直接退出容器并終止容器運行

    9.2 [ctrl+p]+[ctrl+q](快捷鍵) 退出容器,但是不會終止容器運行

  10. docker commit -m'版本標識' id(容器id) ubuntu:16.04(鏡像與版本號)   提交鏡像且生成鏡像(可以通過該命令把搭建好的容器打包成一個新的鏡像或者覆蓋原鏡像(即是修改原鏡像內(nèi)容,生成的鏡像名與版本號相同就可以直接覆蓋))

好了,大家了解了docker,下面是本文介紹的重點,一起看看吧。

Nginx 自己沒有處理日志的滾動問題,它把這個球踢給了使用者。一般情況下,你可以使用 logrotate 工具來完成這個任務,或者如果你愿意,你可以寫各式各樣的腳本完成同樣的任務。本文筆者介紹如何滾動運行在 docker 中的 nginx 日志文件(下圖來自互聯(lián)網(wǎng))。

思路

Nginx 官方其實給出了如何滾動日志的說明:

Rotating Log-files
In order to rotate log files, they need to be renamed first. After that USR1 signal should be sent to the master process. The master process will then re-open all currently open log files and assign them an unprivileged user under which the worker processes are running, as an owner. After successful re-opening, the master process closes all open files and sends the message to worker process to ask them to re-open files. Worker processes also open new files and close old files right away. As a result, old files are almost immediately available for post processing, such as compression.

這段說明的大意是:

•先把舊的日志文件重命名
•然后給 nginx master 進程發(fā)送 USR1 信號
•nginx master 進程收到信號后會做一些處理,然后要求工作者進程重新打開日志文件
•工作者進程打開新的日志文件并關(guān)閉舊的日志文件

其實真正需要我們做的工作只有前面兩點!

創(chuàng)建測試環(huán)境

假設(shè)你的系統(tǒng)中已經(jīng)安裝好了 docker,這里我們直接運行一個 nginx 容器:

$ docker run -d \

 -p 80:80 \

 -v $(pwd)/logs/nginx:/var/log/nginx \

 --restart=always \

 --name=mynginx \

 nginx:1.11.3

注意,我們把 nginx 的日志綁定掛載到了當前目錄下的 logs 目錄下。

把下面的內(nèi)容保存到 test.sh 文件中:

#!/bin/bash
for ((i=1;i<=100000;i++))
do
 curl http://localhost > /dev/null
 sleep 1
done

然后運行這個腳本,就可以模擬產(chǎn)生連續(xù)的日志記錄。

創(chuàng)建滾動日志的腳本

創(chuàng)建 rotatelog.sh 文件,其內(nèi)容如下:

#!/bin/bash
getdatestring()
{
 TZ='Asia/Chongqing' date "+%Y%m%d%H%M"
}
datestring=$(getdatestring)
mv /var/log/nginx/access.log /var/log/nginx/access.${datestring}.log
mv /var/log/nginx/error.log /var/log/nginx/error.${datestring}.log
kill -USR1 `cat /var/run/nginx.pid`

getdatestring 函數(shù)取當前的時間并格式化為字符串,比如 "201807241310",筆者比較喜歡用日期和時間來命名文件。注意這里通過 TZ='Asia/Chongqing' 指定了時區(qū),因為默認情況下格式化的是 UTC 時間,用起來怪怪的(要實時腦補 +8 小時)。下面的兩條 mv 命令用來重命名日志文件。最后通過 kill 命令向 nginx master 進程發(fā)送 USR1 信號。

通過下面的命令為 rotatelog.sh 文件添加可執(zhí)行權(quán)限并復制到 $(pwd)/logs/nginx 目錄下:

$ chmod +x rotatelog.sh
$ sudo cp rotatelog.sh $(pwd)/logs/nginx

定時執(zhí)行滾動操作

我們的 nginx 運行在容器中,所以需要在容器中給 nginx master 進程發(fā)送 USR1 信號。因此我們需要通過 docker exec 命令在 mynginx 容器中執(zhí)行 rotatelog.sh 腳本:

$ docker exec mynginx bash /var/log/nginx/rotatelog.sh

執(zhí)行一次上面的命令,會如期產(chǎn)生一批新的日志文件:

下面我們把這個命令配置在定時任務中,讓它每天早上 1 點鐘執(zhí)行一次。執(zhí)行 crontab -e 命令,并在文件的末尾添加下面的行:

* 1 * * * docker exec mynginx bash /var/log/nginx/rotatelog.sh

保存并退出就可以了。下圖是筆者測試過程中每 5 分鐘滾動一次的效果:

為什么不在宿主機中直接 mv 日志文件?

理論上這么做是可以的,因為通過綁定掛載的數(shù)據(jù)卷中的內(nèi)容從宿主機上看和從容器中看都是一樣的。但是真正這么做的時候你很可能碰到權(quán)限問題。在宿主機中,你一般使用的是普通用戶,而在容器中產(chǎn)生的日志文件的所有者是會是特殊的用戶,并且一般不會給其它用戶寫和執(zhí)行的權(quán)限:


當然,如果你在宿主機中使用的是 root 用戶就不會有問題。

能從宿主機中發(fā)送的信號嗎?

其實這個問題的全稱應該是:能從宿主機中給 docker 容器中的 nginx master 進程發(fā)送信號嗎?

答案是,可以的。

筆者這《在 docker 容器中捕獲信號》一文中介紹了容器中信號的捕獲問題,感興趣的朋友可以去看看。在那篇文章中我們介紹了 docker 向容器中進程發(fā)送信號的 kill 命令。我們可以通過命令:

$ docker container kill mynginx -s USR

向容器中的 1 號進程(nginx master)發(fā)送 USR1 信號(這種方式只能向 1 號進程發(fā)送信號):

結(jié)合上面的兩個問題,我們可以寫出另外的一種方式來滾動 docker 中的 nginx 日志。這種方式不需要通過 docker exec 命令在容器中執(zhí)行命令,而完全在宿主機中完成所有的操作:

•先重命名容器數(shù)據(jù)卷中的日志文件
•給容器中的 1 號進程發(fā)送 USR1 信號

參考:

How To Configure Logging and Log Rotation in Nginx on an Ubuntu VPS

How To Manage Logfiles with Logrotate on Ubuntu 16.04

總結(jié)

以上所述是小編給大家介紹的滾動 docker 中的 nginx 日志思路詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

標簽:湖南 遼源 南通 衡水 楊凌 海東 黃石 新鄉(xiāng)

巨人網(wǎng)絡(luò)通訊聲明:本文標題《滾動 docker 中的 nginx 日志思路詳解》,本文關(guān)鍵詞  滾動,docker,中的,nginx,日志,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《滾動 docker 中的 nginx 日志思路詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于滾動 docker 中的 nginx 日志思路詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美国产精品一区二区| 美国十次了思思久久精品导航| 亚洲日本乱码在线观看| 亚洲最大的成人av| 日本强好片久久久久久aaa| 韩国欧美一区二区| 91丨porny丨户外露出| 欧美精品v日韩精品v韩国精品v| 欧美一级理论性理论a| 久久久久国产精品免费免费搜索| 国产精品色在线| 午夜精品久久久久影视| 国产麻豆91精品| 在线观看三级视频欧美| 精品国产乱码久久久久久老虎| 国产精品亲子伦对白| 亚洲成人av中文| 成人精品一区二区三区四区| 欧美日韩日本视频| 中文字幕av一区二区三区高 | 91同城在线观看| 欧美日本视频在线| 欧美激情一区二区三区全黄| 亚洲国产中文字幕| 国产成人激情av| 欧美精品在线一区二区三区| 久久久久99精品一区| 亚洲国产婷婷综合在线精品| 国产麻豆精品视频| 制服.丝袜.亚洲.中文.综合| 国产精品久久久久久久午夜片| 91精品国产色综合久久不卡蜜臀| 精品久久久网站| 精一区二区三区| 91久久精品一区二区| 26uuu亚洲综合色| 亚洲aaa精品| 成人av网站免费| 精品对白一区国产伦| 亚洲午夜精品一区二区三区他趣| 风间由美中文字幕在线看视频国产欧美 | av在线不卡电影| 精品国产一二三| 亚洲成av人片在线| 色综合久久中文综合久久牛| 久久久91精品国产一区二区精品| 高清免费成人av| 欧美刺激午夜性久久久久久久| 一区二区久久久| 成人18视频在线播放| 精品国产乱码久久久久久夜甘婷婷| 亚洲动漫第一页| 色综合久久久网| 国产日韩精品视频一区| 久久国产人妖系列| 制服.丝袜.亚洲.另类.中文| 亚洲午夜精品在线| 欧美在线视频全部完| 最新热久久免费视频| 成人综合在线观看| 久久亚洲精品国产精品紫薇| 蜜臀av在线播放一区二区三区| 91国偷自产一区二区使用方法| 国产精品看片你懂得| 国产精品一线二线三线| 亚洲精品在线观看网站| 美女www一区二区| 欧美一区二区三区在| 亚洲图片欧美色图| 欧美三级欧美一级| 亚洲mv在线观看| 4hu四虎永久在线影院成人| 亚洲成人一区二区| 欧美精品久久99| 天天爽夜夜爽夜夜爽精品视频| 欧美性猛交xxxx乱大交退制版| 亚洲欧美另类久久久精品| 99精品久久免费看蜜臀剧情介绍| 国产精品每日更新在线播放网址| 国产盗摄视频一区二区三区| 久久精品在线免费观看| 国产成人精品亚洲日本在线桃色| 久久久不卡影院| 成人app在线观看| 亚洲人成网站色在线观看| 91视视频在线观看入口直接观看www| 中文字幕日韩一区| 99re成人精品视频| 亚洲综合在线观看视频| 欧美日韩一区二区不卡| 日日夜夜精品视频免费| 日韩手机在线导航| 国产乱理伦片在线观看夜一区| 久久久影院官网| 91亚洲永久精品| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美一区二区成人| 日韩一区二区三区免费看| 亚洲最大成人综合| 欧美日韩中文字幕一区| 人人精品人人爱| 日韩视频一区在线观看| 久久99精品久久久| 精品国产sm最大网站| 国产v综合v亚洲欧| 日本一区二区成人| 欧洲av在线精品| 天天操天天色综合| 久久先锋资源网| 高清在线观看日韩| 亚洲国产欧美一区二区三区丁香婷| 欧洲一区在线电影| 午夜精品福利视频网站| 91丨porny丨国产入口| 日日欢夜夜爽一区| 日韩精品一区二区在线| 欧美色欧美亚洲另类二区| 日韩在线播放一区二区| 日韩一区二区三区免费观看| 国产精品资源网| 伊人性伊人情综合网| 欧美日韩日日夜夜| 韩国精品免费视频| 国产精品看片你懂得| 欧美日韩精品一区视频| 国产在线播放一区| 成人欧美一区二区三区视频网页 | 欧美三级日韩三级国产三级| 色8久久精品久久久久久蜜| 免费国产亚洲视频| 欧美国产欧美亚州国产日韩mv天天看完整| 91麻豆自制传媒国产之光| 亚洲午夜视频在线观看| 日韩欧美一卡二卡| 国产91精品免费| 一区二区三区在线视频播放| 91精品国产一区二区三区香蕉| 精品写真视频在线观看 | 国产精品亚洲人在线观看| 亚洲精品视频一区二区| 欧美一区二区三区系列电影| 成人黄色在线视频| 日韩精品亚洲一区二区三区免费| 26uuu亚洲综合色欧美| 色欧美日韩亚洲| 大桥未久av一区二区三区中文| 一区二区三区影院| 国产三级欧美三级| 欧美怡红院视频| 99国产精品久| 韩国精品在线观看| 亚洲国产日韩精品| 亚洲人成在线观看一区二区| 日韩欧美三级在线| 欧美视频一区二| 国产99久久久国产精品| 精品一区二区三区免费观看| 日本一区二区成人| 91色乱码一区二区三区| 欧美国产一区二区在线观看| 亚洲欧洲av在线| 91福利在线免费观看| 亚洲午夜日本在线观看| 国产日韩欧美一区二区三区综合| 99精品视频在线播放观看| 国产成人啪免费观看软件| 午夜日韩在线电影| 国产精品久久久久久久久动漫| 日韩免费高清av| 91国内精品野花午夜精品| 成人久久视频在线观看| 久久精品噜噜噜成人88aⅴ| 一个色妞综合视频在线观看| 中文字幕第一区综合| 欧美国产日韩a欧美在线观看| 91精品欧美福利在线观看| 日本韩国精品在线| 成人免费视频视频| 视频在线在亚洲| 偷窥少妇高潮呻吟av久久免费| ●精品国产综合乱码久久久久| 久久久电影一区二区三区| 精品剧情v国产在线观看在线| 成人99免费视频| 97se亚洲国产综合自在线不卡| 国产精品一区二区在线看| 美美哒免费高清在线观看视频一区二区| 一区二区国产盗摄色噜噜| 亚洲视频在线一区| 中文字幕在线视频一区| 欧美精品一区二区久久久| 日韩亚洲欧美综合| 激情综合一区二区三区| 国产精品每日更新| 最近日韩中文字幕| 久久众筹精品私拍模特| 日韩一级片在线播放| 欧美一区二区日韩| 欧美午夜片在线看| 欧美性一二三区|