1. 程式人生 > >docker容器日誌管理(清理)

docker容器日誌管理(清理)

前言


在使用docker容器時候,其日誌的管理是我們不得不考慮的事情。因為docker容器的日誌檔案會佔據大量的磁碟空間。下面介紹的就是對docker容器日誌的管理。



docker容器日誌清理


docker容器的日誌一般存放在/var/lib/docker/containers/下的container_id下,以json.log為結尾。
(每個容器會生成一個對應的container_id)
在這裡插入圖片描述

在這裡插入圖片描述


【1】檢視所有docker容器日誌的大小


find /var/lib/docker/containers/ -name *-json.log |xargs du -sh

在這裡插入圖片描述



【2】清理Docker容器日誌


docker容器執行時,使用rm的方式刪除日誌檔案,是無用的,磁碟空間仍會被佔用。
因為在Linux中,使用rm刪除檔案,只是從檔案系統的目錄結構上解除連結。如果有一個程序正在使用這個檔案,程序將仍然可以讀取該檔案,磁碟空間也會一直被佔用。

可以像處理tomcat的日誌的方式對容器日誌進行清空或切割。


<1>docker容器日誌清理指令碼(清理所有docker容器的日誌)

clean_dockerlog.sh


#!/bin/sh 

logs=`find /var/lib/docker/containers/ -name *-json.log`  

for docker_log in $logs  
do  
echo " "  > $docker_log  
done  


<2>docker容器日誌切割指令碼(切割所有docker容器日誌)

qie_dockerlog.sh
 

#!/bin/bash 

 logs=`find /var/lib/docker/containers/ -name *-json.log` 

for docker_log in $logs  
do  
     y=`date "+%Y"`
     m=`date "+%m"`
     d=`date "+%d"`
     cp $docker_log  $docker_log/../`dockerlogs.$y_$m_$d`
     echo " " > $docker_log
done

chmod +x /root/qie_dockerlog.sh
可以將指令碼放入計劃任務中,定期執行。
crontab  -e
* * 3 * * /bin/bash   /root/qie_dockerlog.sh


後記


實際上,對docker容器的日誌及其他的管理,我們也可以使用docker compose來實現。它的優點是可以通過一個配置檔案來管理多個Docker容器。這個由於內容比較多,就先放到以後再介紹了。