亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Nginx > 正文

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

2024-08-30 12:29:51
字體:
來源:轉載
供稿:網友

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 創建并運行容器容器

    -t 表示在新容器內指定一個偽終端或終端

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

    -p 指定映射端口

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

    7.1 docker run -dit ubuntu:16.04 創建并后臺運行容器

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

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

  9. 退出容器

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

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

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

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

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

docker,nginx,日志

思路

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 進程發送 USR1 信號
•nginx master 進程收到信號后會做一些處理,然后要求工作者進程重新打開日志文件
•工作者進程打開新的日志文件并關閉舊的日志文件

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

創建測試環境

假設你的系統中已經安裝好了 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 目錄下。

把下面的內容保存到 test.sh 文件中:

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

然后運行這個腳本,就可以模擬產生連續的日志記錄。

創建滾動日志的腳本

創建 rotatelog.sh 文件,其內容如下:

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

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

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

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

定時執行滾動操作

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

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

執行一次上面的命令,會如期產生一批新的日志文件:

docker,nginx,日志

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

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

docker,nginx,日志

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

docker,nginx,日志

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

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


docker,nginx,日志

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

能從宿主機中發送的信號嗎?

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

答案是,可以的。

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

$ docker container kill mynginx -s USR

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

docker,nginx,日志

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

•先重命名容器數據卷中的日志文件
•給容器中的 1 號進程發送 USR1 信號

參考:

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

How To Manage Logfiles with Logrotate on Ubuntu 16.04

總結

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


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性videos高清精品| 久久免费国产视频| 欧美在线www| 97精品在线视频| 久久久久久久久久久成人| 欧美亚洲视频在线看网址| 川上优av一区二区线观看| 538国产精品视频一区二区| 欧美性极品少妇精品网站| 中文字幕欧美国内| 北条麻妃99精品青青久久| 亚洲电影免费观看高清完整版在线| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲人成网在线播放| 性色av香蕉一区二区| 亚洲japanese制服美女| 欧美成人性色生活仑片| 欧美日韩国产二区| 日韩电影大片中文字幕| 最近2019中文字幕在线高清| 91久久精品美女| 成人久久一区二区| 欧美激情在线有限公司| 成人精品一区二区三区| 中文字幕精品久久| 亚洲深夜福利在线| 色播久久人人爽人人爽人人片视av| 欧美精品免费在线| 欧美精品免费在线观看| 91中文精品字幕在线视频| 亚洲国产成人一区| 欧美大尺度电影在线观看| 国产精品久久久久久亚洲调教| 欧美精品在线视频观看| 久久成人一区二区| 欧美成人一区二区三区电影| 日韩欧美999| 久久久电影免费观看完整版| 欧美在线视频在线播放完整版免费观看| 国产欧美精品一区二区三区介绍| 日韩精品极品在线观看播放免费视频| 国产成人短视频| 亚洲欧美另类国产| 亚洲社区在线观看| 不卡毛片在线看| 国产欧美精品久久久| 色www亚洲国产张柏芝| 中文字幕一区二区精品| 中文字幕国产日韩| 亚洲欧洲国产伦综合| 欧美专区日韩视频| 国产精品入口夜色视频大尺度| 国产区亚洲区欧美区| 久久精品国产成人精品| 91成人免费观看网站| 国产精品久久久久久久久免费| 欧美国产日韩一区二区三区| 日韩精品久久久久| 91黑丝高跟在线| 97人洗澡人人免费公开视频碰碰碰| 亚洲精品久久久一区二区三区| 精品中文字幕久久久久久| 精品中文字幕视频| 久久色精品视频| 久久免费精品日本久久中文字幕| 亚洲一区二区免费在线| 国产精品一区电影| 中文字幕日韩在线播放| 久久欧美在线电影| 亚洲欧美日韩国产成人| 欧美激情喷水视频| 97香蕉久久夜色精品国产| 精品夜色国产国偷在线| 全球成人中文在线| 久久中文字幕视频| 97香蕉超级碰碰久久免费软件| 538国产精品一区二区免费视频| 欧美美女18p| 欧美日韩免费区域视频在线观看| 成人国产精品久久久| 国产一区二区三区在线观看视频| 精品国产乱码久久久久酒店| 国产精品久久久久久婷婷天堂| 国产精品高清网站| 亚洲欧美另类自拍| 久久国产精品久久精品| 日韩国产精品视频| 亚洲美女免费精品视频在线观看| 97精品伊人久久久大香线蕉| 亚洲国产97在线精品一区| 国产精品旅馆在线| 久久久久久中文字幕| 精品久久中文字幕| 亚洲精品国产品国语在线| 亚洲图片在线综合| 久久免费视频这里只有精品| 欧美激情欧美激情在线五月| 亚洲免费中文字幕| 亚洲精品国产精品国产自| 国产精品久久久久久久天堂| 日韩大片在线观看视频| 国产精品久久99久久| 久久国内精品一国内精品| 日韩av电影院| 成人国产精品免费视频| 色偷偷偷亚洲综合网另类| 国产日韩在线看片| 91免费精品视频| 91国产精品电影| 国产精品∨欧美精品v日韩精品| 中文字幕亚洲综合久久筱田步美| www.色综合| 97人人模人人爽人人喊中文字| 国产精品成人一区二区三区吃奶| 热门国产精品亚洲第一区在线| 亚洲jizzjizz日本少妇| 国产乱肥老妇国产一区二| 亚洲精品久久视频| 欧美在线免费观看| 黄色一区二区在线观看| 国产精品爽爽ⅴa在线观看| 黄色成人在线免费| 91精品成人久久| 欧美成人激情视频免费观看| 国产精品自产拍在线观| 成人综合网网址| 疯狂蹂躏欧美一区二区精品| 国产精品∨欧美精品v日韩精品| 8x拔播拔播x8国产精品| 精品国内产的精品视频在线观看| 91免费电影网站| 亚洲成人教育av| 国产一区深夜福利| www.日韩av.com| 欧美激情欧美激情在线五月| 日韩av在线免费看| 亚洲偷熟乱区亚洲香蕉av| 26uuu另类亚洲欧美日本一| 九九视频直播综合网| 在线视频一区二区| 日韩成人激情影院| 九九九久久国产免费| 亚洲一区二区三区乱码aⅴ| 日韩精品免费电影| 欧美高清视频一区二区| 欧美壮男野外gaytube| 久热精品视频在线| 国产精品久久久久久久天堂| 欧美激情视频一区二区| 国产精品欧美亚洲777777| 久久不射热爱视频精品| 欧美精品免费在线观看| 国产精品国模在线| 国产香蕉精品视频一区二区三区| 欧洲亚洲女同hd| 亚洲欧美中文字幕在线一区| 亚洲精品福利资源站| 国产精品成人播放| 亚洲精品大尺度| 久久精品国产电影| 久久琪琪电影院| 成人欧美一区二区三区黑人孕妇| 亚洲人成人99网站| 亚洲v日韩v综合v精品v|