問題現(xiàn)象
當(dāng)使用docker部署應(yīng)用后,使用了一段時間后,發(fā)現(xiàn)服務(wù)器的磁盤空間一直在消耗。甚至達(dá)到了97%的磁盤使用率。那么問題來了,是通過加錢增加磁盤控件呢?還是通過“瘦身”的方式實(shí)現(xiàn)呢?下面就以清理docker的log日志來實(shí)現(xiàn)“瘦身”。
排查
docker的log日志文件一般存放在/var/lib/docker/containers
文件夾中。
cd /var/lib/docker/containers
進(jìn)入到該文件夾后,通過du -sh .
命令可以查看到當(dāng)前文件夾下的文件的大小??梢钥吹接泻脦讉€文件都是幾個G的級別。
解決方案
原理及注意事項(xiàng)
一般是.log文件比較大,可以清理,清理Docker容器日志(治標(biāo))如果docker容器正在運(yùn)行,那么使用rm -rf方式刪除日志后,通過df -h會發(fā)現(xiàn)磁盤空間并沒有釋放。原因是在Linux或者Unix系統(tǒng)中,通過rm -rf或者文件管理器刪除文件,將會從文件系統(tǒng)的目錄結(jié)構(gòu)上解除鏈接(unlink)。如果文件是被打開的(有一個進(jìn)程正在使用),那么進(jìn)程將仍然可以讀取該文件,磁盤空間也一直被占用。正確姿勢是cat /dev/null > *-json.log,當(dāng)然你也可以通過rm -rf刪除后重啟docker。文章來源:http://www.zghlxwxcb.cn/news/detail-537107.html
# 進(jìn)入容器目錄
cd /var/lib/docker/containers
# 查看哪個容器占用大
du -sh .
# 也可以具體進(jìn)入某個容器
cd /var/lib/docker/containers/a40b469c66170a20baef5d650e6584de71d74fd1f33351955a1ec128de73de05
# 查看文件大小
ls -l --block-size=m
# 清理日志
cat /dev/null > /var/lib/docker/containers/a40b469c66170a20baef5d650e6584de71d74fd1f33351955a1ec128de73de05/a40b469c66170a20baef5d650e6584de71d74fd1f33351955a1ec128de73de05-json.log
編寫清理日志腳本clean_docker_log.sh文件
#!/bin/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 ========"
執(zhí)行clean_docker_log.sh文件清理日志
# 授權(quán)
chmod +x clean_docker_log.sh
# 執(zhí)行
./clean_docker_log.sh
清理log日志前
清理log日志后文章來源地址http://www.zghlxwxcb.cn/news/detail-537107.html
到了這里,關(guān)于清理Docker部署的log日志文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!