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