天天看點

linux home目錄撐爆,Linux centos /var/lib/docker/container目錄導緻系統存儲爆滿,占用大量存儲解決方案...

在實踐應用的docker的過程中,某一天突然發現磁盤被沾滿,使用df -h指令和du -sh指令逐級檢視發現撐爆磁盤的檔案為docker生成的/var/lib/docker/containers的檔案。

而docker生成的這些檔案中占用空間最大的是*-json.log檔案。而此檔案的内容為docker生成的日志檔案。首先核查該檔案是否有用,如果有用可先進行備份,然後進行檔案内容的清除。

清除方法有兩種,第一種直接删除該檔案,但因為該檔案在docker運作時有程式占用,是以可能無法清除。是以可進行需要重新開機docker程式。

另外一種方案就是使用:cat /dev/null > *-json.log指令進行清除,這樣不需要重新開機docker,隻是把該檔案的内容清空。

但需要注意的是,無論以上兩種清除方法的哪一種,清除之後,docker依舊會繼續産生日志,是以要做好定時備份、清除的工作。

其中*-json.log檔案的目錄路徑類似以下目錄路徑:

/var/lib/docker/containers/f2a8646430bd5c5bb09cd67240e9363c28fa8498097db047287425ad56ab5330

如果是在aws服務下,清除時需要使用root角色,可先使用指令sudo -i 切換。

腳本處理

如果針對此問題經常出來,手動每次進行清理特别麻煩,可采用腳本來進一步改進。比如設定一個檢視的腳本docker_log_size.sh:

echo "======== docker containers logs file size ========"

logs=$(find /var/lib/docker/containers/ -name *-json.log)

for log in $logs

do

ls -lh $log

done

同時,也可以通過腳本來清理:clean_docker_log.sh

echo "======== start clean docker containers logs ========"

logs=$(find /var/lib/docker/containers/ -name *-json.log)

for log in $logs

do

echo "clean logs : $log"

cat /dev/null > $log

done

echo "======== end clean docker containers logs ========"

當然,更進一步也可以配合定時任務來進行處理,不過關鍵日志丢失等問題。這裡就不再舉例說明了。

關注公衆号:程式新視界,一個讓你軟實力、硬技術同步提升的平台

除非注明,否則均為程式新視界原創文章,轉載必須以連結形式标明本文連結