Docker 磁碟佔滿解決方案

2021-10-25 10:30:07 字數 1162 閱讀 9006

2020-11-16 發現線上服務訪問不了報以下錯誤

登入伺服器df -h 檢視docker的overlay已用%100 

然後查詢 linux 系統最大的10個檔案 

find / -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -i{} du -sh {}

找出是docker的*-json.log日誌檔案有好幾個20幾個g的

然後找到日誌檔案將*-json.log日誌清空,命令 cat /dev/null > ***** 

du -sh * 檢視當前目錄下各檔案占用大小

但是,這樣清理之後,隨著時間的推移,容器日誌會像雜草一樣,捲土重來。要從根本上解決問題,需要限制容器服務的日誌大小上限。這個通過配置容器docker-compose的max-size選項來實現

解決方案

1.新建/etc/docker/daemon.json,若有就不用新建了。新增log-dirver和log-opts引數,樣例如下:

# vim /etc/docker/daemon.json

}

max-size=500m,意味著乙個容器日誌大小上限是500m,

max-file=3,意味著乙個容器有三個日誌,分別是id+.json、id+1.json、id+2.json。

// 重啟docker守護程序

# systemctl daemon-reload

# systemctl restart docker

注意:設定的日誌大小,只對新建的容器有效。

2.啟動容器時,可以通過引數設定日誌檔案的大小、日誌檔案的格式。

docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash

docker stats  nginx  檢視容器執行狀態

執行容器的時候新增 docker run --name=nginx --cpus=1  -m=2g  -d  nginx  因為在執行容器的時候不指定資源限制的話,容器之間會競爭資源,甚至會影響服務的呼叫. 

Ubuntu boot 佔滿解決方案

我們在安裝 window 和 ubuntu 雙系統的時候,往往會自定義 boot分割槽,一般網上的教程都會建議給 boot分割槽分配 200m 的大小。但是,系統公升級的時候,往往會是這個分割槽空間被佔滿,導致不能公升級,以下為針對這以問題的解決方法。造成這一問題的主要原因是因為系統公升級的時候會安...

docker服務假死解決方案

簡介本文內容有 1 手動清理假死的docker服務 1.1 找到假死的docker服務 執行docker ps命令找到容器id container id 1.2 先嘗試使用docker自帶的命令停止容器 docker stop container id 發現停不掉 1.3 手動查詢docker目錄下...

Docker 容器磁碟佔滿的幾種情況

本文是我自己最近遇到的兩種情況,後續有新發現再補充。參考文件 應用日誌過多 預設情況下,每個 docker 容器都有 10g 的儲存空間,當超出該大小時,容器就會出現問題。可以參考官方文件 dm.basesize 引數的說明來修改預設的容器大小 指定建立基本裝置時要使用的大小,這會限制影象和容器的大...