docker容器日誌管理(清理)
阿新 • • 發佈:2018-12-21
前言
在使用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容器。這個由於內容比較多,就先放到以後再介紹了。