docker越來越大,心慌,清理一波吧

docker現在基本是程序員電腦上佔用空間最大的軟件了。動輒四五十GB。256的Mac book表示傷不起。

那我們接下來看看如何做一下清理,來一個清爽的docker。

知己知彼

我們先來看下docker佔用的情況

<code>docker system df\t/<code>


docker越來越大,心慌,清理一波吧

這是清理後的效果

上圖共有四個部分

images:鏡像部分

containers:容器部分

local volumes:本地卷部分

Build Cache:構建緩存部分

各個擊破

1,鏡像「image」

懸掛(dangling)鏡像是未打標籤或者未關聯到容器的鏡像,我們看下如何清理它們。

<code>docker images -f dangling=true #查看所有懸掛鏡像
docker image prune #清理所有懸掛鏡像
docker image prune -a #清理所有未被目前存在容器所使用的所有鏡像【這個比較徹底】
docker image prune -f #-f取消提示,直接執行清理
docker image prune -a --filter "until=24h" #--filter "until=24h",添加過濾條件/<code>

2,容器「container」

當你退出容器時,如果未使用

--rm參數,該容器是不會刪除的。該停止容器的可寫層【writable layer】是會佔用磁盤空間的。

<code>docker container prune #清理停止容器
docker container prune -f #取消提示,直接執行清理
docker container prune --filter "until=24h" #添加清理條件,清理所有超過24H的已停止容器/<code>

3,數據卷「volume」

數據卷中包含我們的數據和文件,docker不會主動刪除它們,所以它會佔用我們空間。

<code>docker volume prune #清理不被用到的數據卷
docker volume prune -f #取消提示,直接執行清理
docker volume prune --filter "label!=keep" #添加清理條件,清理所有沒有keep標籤的數據卷/<code>

4,網絡「network」

網絡配置不會佔用太多空間,但是它會創建iptables規則,橋接網絡設備【bridge network devices】和路由表規則。所以我們也可以清理掉不用的網絡配置。

<code>docker network prune #清理掉不被使用的網絡配置
docker network prune -f #取消提示,直接執行清理操作
docker network prune --filter "until=24h" #添加清理條件/<code>

5,一鍵清理

docker提供了一個快捷方式,一鍵清理鏡像,容器,網絡。數據卷在docker版本17.06.1後,需要指定參數 --volumes ,之前是不需要的。

<code>docker system prune #執行一鍵清理
docker system prume -f #取消提示,直接執行清理操作
docker system prune --volumes #docker 17.06.1版本之後,需要手動添加--volumes,才能清理數據卷。/<code>

清理結果

我的電腦,原來用了差不多60GB的空間,清理後,用掉40GB。好吧。作為升級了Mac pro16 500G的用戶,已經沒有256GB的痛了。

但是作為一個技術宅,乾淨的代碼,乾淨的電腦才舒服。


分享到:


相關文章: