Docker容器日志查看與清理的方式


美國第三任總統(托馬斯.傑弗遜)曾說過:“不要因為別的人相信或否定了什么東西,你也就去相信它或否定它。上帝贈予你一個用來判斷真理和謬誤的頭腦。那你就去運用它吧!”。

在沒有陪你奔跑的日子,努力加油哦!

發現

    正常使用docker部署測試環境程序,一直部署不上去。最后發現docker容器運行產生日志過多,導致了系統存儲爆滿,服務無法正常訪問。(服務中開啟了最高日志級別debugger)。

    遇到了問題,那就想辦法解決唄,百度了哈,最終找到了解決方案。在此做下記錄。

日志分類

日志分為兩類,一類是Docker引擎日志;另一類是容器日志。

  • Docker引擎日志
    Docker引擎日志一般是交給了Upstart(Ubuntu14.04)或者systemd(CentOS 7,Ubuntu 16.04)。前者一般位於/var/log/upstart/docker.log下,后者一般通過 jounarlctl -u docker來讀取。不同系統的位置都不一樣,參考如下:
系統 日志位置
Ubuntu(14.04) /var/log/upstart/docker.log
Ubuntu(16.04) journalctl -u docker.service
CentOS 7/RHEL 7/Fedora journalctl -u docker.service
CoreOS journalctl -u docker.service
OpenSuSE journalctl -u docker.service
OSX ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/log/d‌​ocker.log
Debian GNU/Linux 7 /var/log/daemon.log
Debian GNU/Linux 8 journalctl -u docker.service
Boot2Docker /var/log/docker.log
  • Docker容器日志
    每個容器的日志默認都會以json-file的格式存儲於/var/lib/docker/containers/<容器id>/<容器id>-json.log下。
  1. 查找全部容器的日志文件
find /var/lib/docker/containers -name *.log
  1. 查看日志位置
docker inspect --format='{{.LogPath}}' <container_name>
  1. 實時查詢內容
tail -f `docker inspect --format='{{.LogPath}}' <container_name>`
  • 編寫腳本查看、清理日志
         既然我們知道了怎么來查看docker產生的日志和文件的存儲位置,那么就開始編寫腳本吧。參考如下:
  1. 查看容器日志大小 --- logs_file_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
  1. 清理日志 --- clean_containers_logs.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 ========"

cat /dev/null > $log 表示將$log的文件內容清空

可通過 sh logs_file_size.sh 和 sh clean_containers_logs.sh 運行兩個shell腳本。

參考文章:
https://wxnacy.com/2018/06/14/docker-log/
https://www.cnblogs.com/YatHo/p/7866029.html
https://www.choupangxia.com/2019/09/15/linux-centos-var-lib-docker-container


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM