docker的/var/lib/docker/overlay文件夾忽然佔滿了硬盤

場景描述

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

仍是以爲有些奇怪的,畢竟docker的安裝盤有800多個G的空間,以前也只用了100左右,以爲有點奇怪,就開始了排錯。服務器

排錯過程

自己機器只有咱們一家在用,因此不存在被佔用的狀況。因而使用下面命令查看是否是硬盤真被佔滿了:網絡

df -h

結果然的是佔滿了😂ui

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

du -sh *

發現是 /var/lib/docker/overlay 佔滿了.net

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

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

也能夠參考官網(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
相關文章
相關標籤/搜索