docker的/var/lib/docker/overlay文件夾突然占滿了硬盤


場景描述

事情是這樣的,前兩天客戶的服務器突然斷電了,導致用docker部署的服務也掛了。昨天去現場,重啟了docker,同時准備更新一下服務。結果發現有一台節點硬盤滿了…

還是覺得有些奇怪的,畢竟docker的安裝盤有800多個G的空間,之前也只用了100左右,覺得有點奇怪,就開始了排錯。

排錯過程

本身機器只有我們一家在用,所以不存在被占用的情況。於是使用下面命令查看是不是硬盤真被占滿了:

df -h

結果真的是占滿了😂

再用下面命令查看哪個文件夾太大:

du -sh *

發現是 /var/lib/docker/overlay 占滿了

網上查一下這個目錄的作用,說是 overlay/overlay2表示Docker的存儲驅動,可以參考一下這篇文章:https://blog.csdn.net/styshoo/article/details/60715942

也就是說容器/鏡像等都會存在這個目錄下,當量大的時候就會占滿硬盤。

也可以參考官網(https://docs.docker.com/storage/storagedriver/overlayfs-driver/

繼續在網上搜資料,說可以看看是不是死掉容器過多的原因,使用 docker ps -a看了下,果然是。於是清理了一下無用的容器,硬盤就恢復正常了……

簡單辦法

多看了一下資料,發現可以使用 docker system prune來自動清理空間,參考下面:

  • 該指令默認會清除所有如下資源:
    • 已停止的容器(container)
    • 未被任何容器所使用的卷(volume)
    • 未被任何容器所關聯的網絡(network)
    • 所有懸空鏡像(image)。
  • 該指令默認只會清除懸空鏡像,未被使用的鏡像不會被刪除。
  • 添加 -a 或 --all 參數后,可以一並清除所有未使用的鏡像和懸空鏡像。
  • 可以添加 -f 或 --force 參數用以忽略相關告警確認信息。
  • 指令結尾處會顯示總計清理釋放的空間大小。

https://yq.aliyun.com/articles/272173

另外,使用下面命令可以查看docker所占的硬盤大小,如:

➜  20190417 docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              104                 5                   77.78GB             71.39GB (91%)
Containers          8                   0                   139MB               139MB (100%)
Local Volumes       30                  1                   3.276kB             3.183kB (97%)
Build Cache                                                 0B                  0B


免責聲明!

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



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