Docker下/var/lib/docker/overlay2空间清理办法
Docker下/var/lib/docker/overlay2空間清理辦法
1. 查看磁盤占用
?? ?df -h
2. Docker 的內(nèi)置 CLI 指令docker system df
?? ?可用于查詢鏡像(Images)、容器(Containers)和本地卷(Local Volumes)等空間使用大戶的空間占用情況。
?? ?~]# docker system df
?? ?查看詳細
?? ?~]# docker system df -v
3. 空間清理
?? ?【1】通過 Docker 內(nèi)置的 CLI 指令docker system prune來進行自動空間清理。
?? ?~]# docker system prune --help
?? ?該指令默認會清除所有如下資源:
?? ??? ?已停止的容器(container)
?? ??? ?未被任何容器所使用的卷(volume)
?? ??? ?未被任何容器所關聯(lián)的網(wǎng)絡(network)
?? ??? ?所有懸空鏡像(image)。
?? ??? ?
?? ?該指令默認只會清除懸空鏡像,未被使用的鏡像不會被刪除。添加-a 或 --all參數(shù)后,可以一并清除所有未使用的鏡像和懸空鏡像。
?? ?可以添加-f 或 --force參數(shù)用以忽略相關告警確認信息。
?? ?【2】另外除了system級別的,還有針對容器或是鏡像級別的刪除命令:
?? ?docker image prune:刪除懸空的鏡像。
?? ?docker container prune:刪除無用的容器。
? ? ? --默認情況下docker container prune命令會清理掉所有處于stopped狀態(tài)的容器
? ? ? --如果不想那么殘忍統(tǒng)統(tǒng)都刪掉,也可以使用--filter標志來篩選出不希望被清理掉的容器。例子:清除掉所有停掉的容器,但24內(nèi)創(chuàng)建的除外:
? ? ? --$ docker container prune --filter "until=24h" ?
?? ?docker volume prune:刪除無用的卷。
?? ?docker network prune:刪除無用的網(wǎng)絡
?? ?【3】手動清除
?? ??? ?對于懸空鏡像和未使用鏡像可以使用手動進行個別刪除:
?? ??? ?1、刪除所有懸空鏡像,不刪除未使用鏡像:
?? ??? ?docker rmi $(docker images -f "dangling=true" -q)
?? ??? ?2、刪除所有未使用鏡像和懸空鏡像
?? ??? ?docker rmi $(docker images -q)
?? ??? ?3、清理卷
?? ??? ?如果卷占用空間過高,可以清除一些不使用的卷,包括一些未被任何容器調(diào)用的卷(-v 詳細信息中若顯示 LINKS = 0,則是未被調(diào)用):
?? ??? ?刪除所有未被容器引用的卷:
?? ??? ?docker volume rm $(docker volume ls -qf dangling=true)
?? ??? ?4、容器清理
?? ??? ?如果發(fā)現(xiàn)是容器占用過高的空間,可以手動刪除一些:
?? ??? ?刪除所有已退出的容器:
?? ??? ?docker rm -v $(docker ps -aq -f status=exited)
?? ??? ?刪除所有狀態(tài)為dead的容器
?? ??? ?docker rm -v $(docker ps -aq -f status=dead)
4. 查找系統(tǒng)中的大文件【以上三步仍然不可以的時候執(zhí)行】
?? ? find /var/lib/docker/overlay2/ -type f -size +100M -print0 | xargs -0 du -h | sort -nr?
?? ? # 查找指定目錄下所有大于100M的所有文件
?? ??
5. 對標準輸入日志大小與數(shù)量進行限制
?? ?新建或修改/etc/docker/daemon.json,添加log-dirver和log-opts參數(shù)
?? ?vi /etc/docker/daemon.json
?? ?{
?? ? ? "log-driver":"json-file",
?? ? ? "log-opts": {"max-size":"3m", "max-file":"1"}
?? ?}
?? ?重啟docker的守護線程
?? ?systemctl daemon-reload
?? ?systemctl restart docker
6. docker 清理空間命令
?? ?刪除懸空鏡像
?? ?docker rmi $(docker images -f "dangling=true" -q)
?? ?docker image prune -a -f
?? ?#顯示所有的容器,過濾出Exited狀態(tài)的容器,取出這些容器的ID,
?? ?sudo docker ps -a|grep Exited|awk '{print $1}'
?? ?#查詢所有的容器,過濾出Exited狀態(tài)的容器,列出容器ID,刪除這些容器
?? ?sudo docker rm `docker ps -a|grep Exited|awk '{print $1}'`
?? ?方法二:?
?? ?#刪除所有未運行的容器(已經(jīng)運行的刪除不了,未運行的就一起被刪除了)
?? ?sudo docker rm $(sudo docker ps -a -q)
?? ??
?? ?方法三:
?? ?#根據(jù)容器的狀態(tài),刪除Exited狀態(tài)的容器
?? ?sudo docker rm $(sudo docker ps -qf status=exited)
?? ??
?? ?方法四:
?? ?#Docker 1.13版本以后,可以使用 docker containers prune 命令,刪除孤立的容器。
?? ?sudo docker container prune
?? ??
?? ?#刪除所有鏡像
?? ?sudo docker rmi $(docker images -q)
7. 實在沒辦法,只有把/var目錄下所有日志文件清空
?? ?~]# for i in `find /var -name *.log*`;do >$i;done
?? ?然后重啟node節(jié)點,因為有些日志文件被占用,清空后空間仍然無法釋放
總結(jié)
以上是生活随笔為你收集整理的Docker下/var/lib/docker/overlay2空间清理办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WeMall应用商店上线啦
- 下一篇: day17-远程管理SSH服务