場景描述
事情是這樣的,前兩天客戶的服務器忽然斷電了,致使用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