成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

看看程序員如何被 Docker 日志坑慘了

開源
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然后發布到任何流行的 Linux或Windows 機器上,也可以實現虛擬化。

[[426544]]

最近在讀《計算機程序的構造和解釋》,里面有一句話:代碼必須能夠被人閱讀,只是機器恰巧可以執行。

我也想到了一句話:BUG 一定能夠被人寫出,只是恰好我寫的多而已。

說多了都是淚,來看看我最近遇到的一個問題。

問題

普通的一天,打開普通的電腦,登錄一臺普通的服務器,敲下一條普通的命令。

在我使用命令補全時,出現了一條不普通的提示:

  1. -bash: cannot create temp file for here-document: No space left on device ls -bash 

怎么磁盤滿了?

使用 df -h 一看還真是。

什么原因呢?

解決

首先,查找一下系統里的大文件,看看是哪個小可愛搞的鬼。

  1. du -sh /* | grep G 

很快就定位到了這個目錄:/var/lib/docker/containers。

原來是 Docker 這家伙,這個目錄下存放的都是容器運行過程中產生的日志。

使用下面命令來給這些文件按大小排個序:

  1. du -d1 -h /var/lib/docker/containers | sort -h 
  2.  
  3. 32K    /var/lib/docker/containers/d607c06e475191fff1abd0c2b4b672e7fe8a96cb197f4e8557b18600de2e60af 
  4. 36K    /var/lib/docker/containers/0d4321106721b9d26335fefef7b9e8e23629691684a4da2f953ac8223c8240c3 
  5. 36K    /var/lib/docker/containers/7525aab4aa917aa1016169114762261726ac7b9cc712bef35cdc7035b50d20ce 
  6. 36K    /var/lib/docker/containers/9252e1c373d59ef5613c2b6122eb6e43aa2bd822bd2c199aa67d6eb659c4adb7 
  7. 142M    /var/lib/docker/containers 
  8. 142M    /var/lib/docker/containers/15700ee92cd2831554b9a1e78127df0f07248c1498d35c17525407bc8a98bc1a 

文件名稱就是容器 ID,每個文件對應一個容器,也就可以定位到,具體是哪個容器產生了大量的日志。

使用這個命令可以將大文件快速清空:

  1. sh -c "cat /dev/null > ${log_file_name}" 

但是清空了文件哪算解決問題,新的日志還在源源不斷往日志里打呢。看了看日志內容,很熟悉。前兩天為了調試程序,剛加的一條 print。

編輯代碼,刪除 print,重啟容器。好了,日志不再瘋狂追加了。

為什么 print 語句將日志都輸出到文件里了呢?別著急,后面再來詳細介紹。

先處理一下眼前的問題,放任日志無限增長是肯定不行的,需要有一個單個文件大小限制。否則,明天張三再加一條 print,磁盤又滿了。

這里有兩個方案:

  1. 單一容器配置
  2. 全局配置

單一容器配置

啟動容器時,通過參數來控制日志的文件個數和單個文件的大小:

  1. docker run -it --log-opt max-size=10m --log-opt max-file=3 redis 

但這樣做是比較麻煩的,更多的采用的是全局配置的方式。

全局配置

編輯 /etc/docker/daemon.json:

  1.     "log-driver":"json-file"
  2.     "log-opts":{ 
  3.         "max-size" :"50m"
  4.         "max-file":"3" 
  5.     } 

重啟 Docker 服務:

  1. systemctl daemon-reload 
  2. systemctl restart docker 

注意: 已存在的容器不會生效,需要重建才可以。

接下來再說說上文提到的 print 問題。

Docker 日志

Docker 日志分為兩類:

  • Docker 引擎日志(也就是 dockerd 運行時的日志)
  • 容器的日志,容器內的服務產生的日志

引擎日志

Docker 引擎日志一般是交給了 Upstart(Ubuntu 14.04) 或者 systemd (CentOS 7, Ubuntu 16.04)。前者一般位于 /var/log/upstart/docker.log 下,后者一般通過 journalctl -u docker 進行查看。

不同系統的位置都不一樣,網上有人總結了一份列表,我修正了一下,可以參考:

容器日志

使用下面命令可以顯示當前運行的容器的日志信息:

  1. docker logs CONTAINER 

UNIX 和 Linux 命令有三種輸入輸出,分別是 STDIN、STDOUT 和 STDERR。docker logs 顯示的內容包含 STDOUT 和 STDERR。

在生產環境下,如果我們的應用輸出到日志文件里,那么我們在使用 docker logs 時一般收集不到太多重要的信息。

這里來看一下 nginx 和 httpd 是怎么做的:

  • nginx 官方鏡像,使用了一種方式,讓日志輸出到 STDOUT,也就是創建一個符號鏈接 /var/log/nginx/access.log 到 /dev/stdout。
  • httpd 使用的是讓其輸出到指定文件,正常日志輸出到 /proc/self/fd/1 (STDOUT) ,錯誤日志輸出到 /proc/self/fd/2 (STDERR)。

當日志量比較大的時候,使用 docker logs 來查看日志,會對 docker daemon 造成比較大的壓力,容易導致容器創建慢等一系列問題。

只有使用了 local 、json-file、journald 日志驅動的容器才可以使用 docker logs 捕獲日志,使用其他日志驅動無法使用 docker logs。

Docker 默認使用 json-file 作為日志驅動。

除此之外,Docker 還提供了很多其他日志驅動,這里就不過多介紹。還有日志管理方案,我也不是很有經驗,大家如果感興趣的話自己搜搜看吧。

 

責任編輯:姜華 來源: AlwaysBeta
相關推薦

2021-07-16 07:57:35

SpringBootOpenFeign微服務

2015-09-16 09:57:41

swoolePHP程序員

2025-04-22 03:00:00

模型SpringAI

2015-03-18 09:51:45

2024-07-04 11:44:02

2024-08-21 08:22:33

2011-09-26 09:52:04

程序員

2018-10-10 15:52:48

程序員代碼編程

2011-10-10 09:22:27

程序員

2020-03-20 08:00:32

代碼程序員追求

2018-02-06 08:36:02

簡歷程序員面試

2018-11-01 15:20:17

前端程序員編程語言

2015-04-03 09:38:32

程序員前人挖坑后人填坑

2024-03-14 10:30:05

緩存場景DEMO

2020-12-11 06:49:04

ELK程序員辭退!

2014-09-26 09:57:41

程序員讀書書籍

2014-08-15 11:07:09

程序員

2018-11-22 10:53:30

程序員技能開發者

2018-03-14 13:32:53

程序員C++JAVA

2019-12-06 17:31:30

程序員人生第一份工作設計
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品美女久久久免费 | 青青草av网站| 久久伦理电影 | 麻豆视频在线看 | 欧美v日韩v | 国产精品久久 | 一级黄色影片在线观看 | 谁有毛片 | 国内自拍真实伦在线观看 | 在线观看亚洲精品视频 | 四虎永久免费地址 | 亚洲一区二区三区免费 | 欧美视频1区 | 国产成人av电影 | 欧美无乱码久久久免费午夜一区 | 国产精品美女久久久久久久网站 | 欧美精品久久久 | 中文字幕第一页在线 | 日韩久久久久 | 欧美日韩综合精品 | 日韩欧美在线视频观看 | 免费三级网站 | 国产精品亚洲成在人线 | 亚洲人成在线播放 | 中文字幕一区二区三区四区五区 | 亚洲精品乱码久久久久久9色 | 亚洲午夜视频 | 精品无码久久久久久久动漫 | 久久国产一区二区三区 | 欧美精品久久久久久久久老牛影院 | 97超碰站 | 久久成人精品一区二区三区 | 视频一区二区三区中文字幕 | 91精品国产一区二区三区香蕉 | 久久精品亚洲精品国产欧美 | 中文字幕在线免费视频 | 亚洲午夜三级 | h视频免费观看 | 日本午夜精品 | 欧美一级片黄色 | 国产欧美日韩综合精品一 |